CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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: 04/07/2011
4 
6 
7 //--------------------------------------
8 // TEcnaHistos.cc
9 // Class creation: 18 April 2005
10 // Documentation: see TEcnaHistos.h
11 //--------------------------------------
12 
13 ClassImp(TEcnaHistos)
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 != 0){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  cout << "*TEcnaHistos> WRONG MANAGEMENT OF ALLOCATIONS: fCnew = "
68  << fCnew << ", fCdelete = " << fCdelete << fTTBELL << endl;
69  }
70  else
71  {
72  // cout << "*TEcnaHistos> BRAVO! GOOD MANAGEMENT OF ALLOCATIONS: fCnew = "
73  // << fCnew << ", fCdelete = " << fCdelete << endl;
74  }
75 
76 #define MGRA
77 #ifndef MGRA
78  if ( fCnewRoot != fCdeleteRoot )
79  {
80  cout << "*TEcnaHistos> WRONG MANAGEMENT OF ROOT ALLOCATIONS: fCnewRoot = "
81  << fCnewRoot << ", fCdeleteRoot = " << fCdeleteRoot << endl;
82  }
83  else
84  {
85  cout << "*TEcnaHistos> BRAVO! GOOD MANAGEMENT OF ROOT ALLOCATIONS:"
86  << " fCnewRoot = " << fCnewRoot <<", fCdeleteRoot = "
87  << fCdeleteRoot << endl;
88  }
89 #endif // MGRA
90 
91  // cout << "TEcnaHistos> Leaving destructor" << endl;
92  // cout << " fCnew = " << fCnew << ", fCdelete = " << fCdelete << endl;
93 
94  // cout << "[Info Management] CLASS: TEcnaHistos. DESTROY OBJECT: this = " << this << endl;
95 
96 }
97 
98 //===================================================================
99 //
100 // Constructors
101 //
102 //===================================================================
104 // Constructor without argument. Call to Init()
105 
106  // cout << "[Info Management] CLASS: TEcnaHistos. CREATE OBJECT: this = " << this << endl;
107 
108  Init();
109 }
110 
111 TEcnaHistos::TEcnaHistos(TEcnaObject* pObjectManager, const TString& SubDet)
112 {
113  // cout << "[Info Management] CLASS: TEcnaHistos. CREATE OBJECT: this = " << this << 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 = 0;
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 = 0;
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 = 0;
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 = 0;
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 = 0;
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 = 0;
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 = 0;
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  fgMaxCar = 512;
209  Int_t MaxCar = fgMaxCar;
210 
211  //------------------------------ initialisations ----------------------
212  fTTBELL = '\007';
213 
214  fT1DRunNumber = 0;
215 
216  //.......... init flags Same plot
234  //.......... init flags colors (Init)
252 
253  //.......... init counter Same canvas
271  //................. Flag Scale X anf Y set to "LIN" and flag color palete set to "Black/Red/Blue"
272 
273  MaxCar = fgMaxCar;
274  fFlagScaleX.Resize(MaxCar);
275  fFlagScaleX = "LIN";
276 
277  MaxCar = fgMaxCar; // (Init)
278  fFlagScaleY.Resize(MaxCar);
279  fFlagScaleY = "LIN";
280 
281  MaxCar = fgMaxCar;
282  fFlagColPal.Resize(MaxCar);
283  fFlagColPal = "Black/Red/Blue";
284 
285  //................. Flag General Title set to empty string
286  MaxCar = fgMaxCar;
287  fFlagGeneralTitle.Resize(MaxCar);
288  fFlagGeneralTitle = "";
289 
290  //................. Init codes Options
291  fOptScaleLinx = 31400;
292  fOptScaleLogx = 31401;
293  fOptScaleLiny = 31402;
294  fOptScaleLogy = 31403;
295 
296  fOptVisLine = 1101;
297  fOptVisPolm = 1102;
298 
299  //............................ (Init)
300  MaxCar = fgMaxCar;
301  fCovarianceMatrix.Resize(MaxCar);
302  fCovarianceMatrix = "Cov";
303  MaxCar = fgMaxCar;
304  fCorrelationMatrix.Resize(MaxCar);
305  fCorrelationMatrix = "Cor";
306 
307  MaxCar = fgMaxCar;
308  fLFBetweenStins.Resize(MaxCar);
309  fLFBetweenStins = "MttLF";
310  MaxCar = fgMaxCar;
311  fHFBetweenStins.Resize(MaxCar);
312  fHFBetweenStins = "MttHF";
313 
314  MaxCar = fgMaxCar;
315  fLFBetweenChannels.Resize(MaxCar);
316  fLFBetweenChannels = "MccLF";
317  MaxCar = fgMaxCar;
318  fHFBetweenChannels.Resize(MaxCar);
319  fHFBetweenChannels = "MccHF";
320 
321  MaxCar = fgMaxCar;
322  fBetweenSamples.Resize(MaxCar);
323  fBetweenSamples = "Mss";
324 
325  //.................................. text pave alignement for pave "SeveralChanging" (HistimePlot)
326  fTextPaveAlign = 12; // 1 = left adjusted, 2 = vertically centered
327  fTextPaveFont = 100; // 10*10 = 10*(ID10 = Courier New)
328  fTextPaveSize = (Float_t)0.025; // 0.0xxx = xxx% of the pave size
329  fTextBorderSize = 1; // Pave Border (=>Shadow)
330 
331  //................................. Init Xvar, Yvar, NbBins management for options SAME and SAME n
332  fXMemoH1SamePlus = "";
333  fXMemoD_NOE_ChNb = "";
334  fXMemoD_NOE_ChDs = "";
335  fXMemoD_Ped_ChNb = "";
336  fXMemoD_Ped_ChDs = "";
337  fXMemoD_TNo_ChNb = "";
338  fXMemoD_TNo_ChDs = "";
339  fXMemoD_MCs_ChNb = "";
340  fXMemoD_MCs_ChDs = "";
341  fXMemoD_LFN_ChNb = "";
342  fXMemoD_LFN_ChDs = "";
343  fXMemoD_HFN_ChNb = "";
344  fXMemoD_HFN_ChDs = "";
345  fXMemoD_SCs_ChNb = "";
346  fXMemoD_SCs_ChDs = "";
347  fXMemoD_MSp_SpNb = "";
348  fXMemoD_MSp_SpDs = "";
349  fXMemoD_SSp_SpNb = "";
350  fXMemoD_SSp_SpDs = "";
351  fXMemoD_Adc_EvDs = "";
352  fXMemoD_Adc_EvNb = "";
353  fXMemoH_Ped_Date = "";
354  fXMemoH_TNo_Date = "";
355  fXMemoH_MCs_Date = "";
356  fXMemoH_LFN_Date = "";
357  fXMemoH_HFN_Date = "";
358  fXMemoH_SCs_Date = "";
359  fXMemoH_Ped_RuDs = "";
360  fXMemoH_TNo_RuDs = "";
361  fXMemoH_MCs_RuDs = "";
362  fXMemoH_LFN_RuDs = "";
363  fXMemoH_HFN_RuDs = "";
364  fXMemoH_SCs_RuDs = "";
365 
366  fYMemoH1SamePlus = "";
367  fYMemoD_NOE_ChNb = "";
368  fYMemoD_NOE_ChDs = "";
369  fYMemoD_Ped_ChNb = "";
370  fYMemoD_Ped_ChDs = "";
371  fYMemoD_TNo_ChNb = "";
372  fYMemoD_TNo_ChDs = "";
373  fYMemoD_MCs_ChNb = "";
374  fYMemoD_MCs_ChDs = "";
375  fYMemoD_LFN_ChNb = "";
376  fYMemoD_LFN_ChDs = "";
377  fYMemoD_HFN_ChNb = "";
378  fYMemoD_HFN_ChDs = "";
379  fYMemoD_SCs_ChNb = "";
380  fYMemoD_SCs_ChDs = "";
381  fYMemoD_MSp_SpNb = "";
382  fYMemoD_MSp_SpDs = "";
383  fYMemoD_SSp_SpNb = "";
384  fYMemoD_SSp_SpDs = "";
385  fYMemoD_Adc_EvDs = "";
386  fYMemoD_Adc_EvNb = "";
387  fYMemoH_Ped_Date = "";
388  fYMemoH_TNo_Date = "";
389  fYMemoH_MCs_Date = "";
390  fYMemoH_LFN_Date = "";
391  fYMemoH_HFN_Date = "";
392  fYMemoH_SCs_Date = "";
393  fYMemoH_Ped_RuDs = "";
394  fYMemoH_TNo_RuDs = "";
395  fYMemoH_MCs_RuDs = "";
396  fYMemoH_LFN_RuDs = "";
397  fYMemoH_HFN_RuDs = "";
398  fYMemoH_SCs_RuDs = "";
399 
433 
434  //.................................. Init canvas/pad pointers (Init)
435  fCurrentCanvas = 0;
436 
437  fCurrentCanvasName = "?";
438 
439  fCanvH1SamePlus = 0;
440  fCanvD_NOE_ChNb = 0;
441  fCanvD_NOE_ChDs = 0;
442  fCanvD_Ped_ChNb = 0;
443  fCanvD_Ped_ChDs = 0;
444  fCanvD_TNo_ChNb = 0;
445  fCanvD_TNo_ChDs = 0;
446  fCanvD_MCs_ChNb = 0;
447  fCanvD_MCs_ChDs = 0;
448  fCanvD_LFN_ChNb = 0;
449  fCanvD_LFN_ChDs = 0;
450  fCanvD_HFN_ChNb = 0;
451  fCanvD_HFN_ChDs = 0;
452  fCanvD_SCs_ChNb = 0;
453  fCanvD_SCs_ChDs = 0;
454  fCanvD_MSp_SpNb = 0;
455  fCanvD_MSp_SpDs = 0;
456  fCanvD_SSp_SpNb = 0;
457  fCanvD_SSp_SpDs = 0;
458  fCanvD_Adc_EvDs = 0;
459  fCanvD_Adc_EvNb = 0;
460  fCanvH_Ped_Date = 0;
461  fCanvH_TNo_Date = 0;
462  fCanvH_MCs_Date = 0;
463  fCanvH_LFN_Date = 0;
464  fCanvH_HFN_Date = 0;
465  fCanvH_SCs_Date = 0;
466  fCanvH_Ped_RuDs = 0;
467  fCanvH_TNo_RuDs = 0;
468  fCanvH_MCs_RuDs = 0;
469  fCanvH_LFN_RuDs = 0;
470  fCanvH_HFN_RuDs = 0;
471  fCanvH_SCs_RuDs = 0;
472 
473 
474  fClosedH1SamePlus = kFALSE; // (Canvas Closed SIGNAL)
475  fClosedD_NOE_ChNb = kFALSE;
476  fClosedD_NOE_ChDs = kFALSE;
477  fClosedD_Ped_ChNb = kFALSE;
478  fClosedD_Ped_ChDs = kFALSE;
479  fClosedD_TNo_ChNb = kFALSE;
480  fClosedD_TNo_ChDs = kFALSE;
481  fClosedD_MCs_ChNb = kFALSE;
482  fClosedD_MCs_ChDs = kFALSE;
483  fClosedD_LFN_ChNb = kFALSE;
484  fClosedD_LFN_ChDs = kFALSE;
485  fClosedD_HFN_ChNb = kFALSE;
486  fClosedD_HFN_ChDs = kFALSE;
487  fClosedD_SCs_ChNb = kFALSE;
488  fClosedD_SCs_ChDs = kFALSE;
489  fClosedD_MSp_SpNb = kFALSE;
490  fClosedD_MSp_SpDs = kFALSE;
491  fClosedD_SSp_SpNb = kFALSE;
492  fClosedD_SSp_SpDs = kFALSE;
493  fClosedD_Adc_EvDs = kFALSE;
494  fClosedD_Adc_EvNb = kFALSE;
495  fClosedH_Ped_Date = kFALSE;
496  fClosedH_TNo_Date = kFALSE;
497  fClosedH_MCs_Date = kFALSE;
498  fClosedH_LFN_Date = kFALSE;
499  fClosedH_HFN_Date = kFALSE;
500  fClosedH_SCs_Date = kFALSE;
501  fClosedH_Ped_RuDs = kFALSE;
502  fClosedH_TNo_RuDs = kFALSE;
503  fClosedH_MCs_RuDs = kFALSE;
504  fClosedH_LFN_RuDs = kFALSE;
505  fClosedH_HFN_RuDs = kFALSE;
506  fClosedH_SCs_RuDs = kFALSE;
507 
508  fCurrentPad = 0; // (Init)
509 
510  fPadH1SamePlus = 0;
511  fPadD_NOE_ChNb = 0;
512  fPadD_NOE_ChDs = 0;
513  fPadD_Ped_ChNb = 0;
514  fPadD_Ped_ChDs = 0;
515  fPadD_TNo_ChNb = 0;
516  fPadD_TNo_ChDs = 0;
517  fPadD_MCs_ChNb = 0;
518  fPadD_MCs_ChDs = 0;
519  fPadD_LFN_ChNb = 0;
520  fPadD_LFN_ChDs = 0;
521  fPadD_HFN_ChNb = 0;
522  fPadD_HFN_ChDs = 0;
523  fPadD_SCs_ChNb = 0;
524  fPadD_SCs_ChDs = 0;
525  fPadD_MSp_SpNb = 0;
526  fPadD_MSp_SpDs = 0;
527  fPadD_SSp_SpNb = 0;
528  fPadD_SSp_SpDs = 0;
529  fPadD_Adc_EvDs = 0;
530  fPadD_Adc_EvNb = 0;
531  fPadH_Ped_Date = 0;
532  fPadH_TNo_Date = 0;
533  fPadH_MCs_Date = 0;
534  fPadH_LFN_Date = 0;
535  fPadH_HFN_Date = 0;
536  fPadH_SCs_Date = 0;
537  fPadH_Ped_RuDs = 0;
538  fPadH_TNo_RuDs = 0;
539  fPadH_MCs_RuDs = 0;
540  fPadH_LFN_RuDs = 0;
541  fPadH_HFN_RuDs = 0;
542  fPadH_SCs_RuDs = 0;
543 
544  fPavTxtH1SamePlus = 0; // (Init)
545  fPavTxtD_NOE_ChNb = 0;
546  fPavTxtD_NOE_ChDs = 0;
547  fPavTxtD_Ped_ChNb = 0;
548  fPavTxtD_Ped_ChDs = 0;
549  fPavTxtD_TNo_ChNb = 0;
550  fPavTxtD_TNo_ChDs = 0;
551  fPavTxtD_MCs_ChNb = 0;
552  fPavTxtD_MCs_ChDs = 0;
553  fPavTxtD_LFN_ChNb = 0;
554  fPavTxtD_LFN_ChDs = 0;
555  fPavTxtD_HFN_ChNb = 0;
556  fPavTxtD_HFN_ChDs = 0;
557  fPavTxtD_SCs_ChNb = 0;
558  fPavTxtD_SCs_ChDs = 0;
559  fPavTxtD_MSp_SpNb = 0;
560  fPavTxtD_MSp_SpDs = 0;
561  fPavTxtD_SSp_SpNb = 0;
562  fPavTxtD_SSp_SpDs = 0;
563  fPavTxtD_Adc_EvDs = 0;
564  fPavTxtD_Adc_EvNb = 0;
565  fPavTxtH_Ped_Date = 0;
566  fPavTxtH_TNo_Date = 0;
567  fPavTxtH_MCs_Date = 0;
568  fPavTxtH_LFN_Date = 0;
569  fPavTxtH_HFN_Date = 0;
570  fPavTxtH_SCs_Date = 0;
571  fPavTxtH_Ped_RuDs = 0;
572  fPavTxtH_TNo_RuDs = 0;
573  fPavTxtH_MCs_RuDs = 0;
574  fPavTxtH_LFN_RuDs = 0;
575  fPavTxtH_HFN_RuDs = 0;
576  fPavTxtH_SCs_RuDs = 0;
577 
578  fImpH1SamePlus = 0; // (Init)
579  fImpD_NOE_ChNb = 0;
580  fImpD_NOE_ChDs = 0;
581  fImpD_Ped_ChNb = 0;
582  fImpD_Ped_ChDs = 0;
583  fImpD_TNo_ChNb = 0;
584  fImpD_TNo_ChDs = 0;
585  fImpD_MCs_ChNb = 0;
586  fImpD_MCs_ChDs = 0;
587  fImpD_LFN_ChNb = 0;
588  fImpD_LFN_ChDs = 0;
589  fImpD_HFN_ChNb = 0;
590  fImpD_HFN_ChDs = 0;
591  fImpD_SCs_ChNb = 0;
592  fImpD_SCs_ChDs = 0;
593  fImpD_MSp_SpNb = 0;
594  fImpD_MSp_SpDs = 0;
595  fImpD_SSp_SpNb = 0;
596  fImpD_SSp_SpDs = 0;
597  fImpD_Adc_EvDs = 0;
598  fImpD_Adc_EvNb = 0;
599  fImpH_Ped_Date = 0;
600  fImpH_TNo_Date = 0;
601  fImpH_MCs_Date = 0;
602  fImpH_LFN_Date = 0;
603  fImpH_HFN_Date = 0;
604  fImpH_SCs_Date = 0;
605  fImpH_Ped_RuDs = 0;
606  fImpH_TNo_RuDs = 0;
607  fImpH_MCs_RuDs = 0;
608  fImpH_LFN_RuDs = 0;
609  fImpH_HFN_RuDs = 0;
610  fImpH_SCs_RuDs = 0;
611 
612  fNbBinsProj = 100; // number of bins for histos in option Projection
613 
614  //.................................... Miscellaneous parameters (Init)
615 
622 
629 
630  fNbOfExistingRuns = 0;
631 
632  fFapNbOfRuns = -1; // INIT NUMBER OF RUNS: set to -1
633  fFapMaxNbOfRuns = -1; // INIT MAXIMUM NUMBER OF RUNS: set to -1
634 
635  MaxCar = fgMaxCar;
636  fFapFileRuns.Resize(MaxCar);
637  fFapFileRuns = "(file with list of runs parameters: no info)";
638 
639  fStartEvolTime = 0;
640  fStopEvolTime = 0;
641  fStartEvolDate = "Start date: not known";
642  fStopEvolDate = "Stop date: not known";
643 
644  fStartEvolRun = 0;
645  fStopEvolRun = 0;
646 
647  fRunType = "Run type: not known";
648 
649  fFapNbOfEvts = 0;
650 
651  MaxCar = fgMaxCar;
652  fMyRootFileName.Resize(MaxCar);
653  fMyRootFileName = "No ROOT file name available (fMyRootFileName).";
654 
655  fFapAnaType = "Analysis name: not known"; // Init Type of analysis
656  fFapNbOfSamples = 0; // Init Nb of required samples
657  fFapRunNumber = 0; // Init Run number
658  fFapFirstReqEvtNumber = 0; // Init First requested event number
659  fFapLastReqEvtNumber = 0; // Init Last requested event number
660  fFapReqNbOfEvts = 0; // Init Requested number of events
661  fFapStexNumber = 0; // Init Stex number
662 
663  //------------------ Init read file flags
664  fAlreadyRead = 1;
665  fMemoAlreadyRead = 0;
666  fTobeRead = 0;
667  fZerv = 0;
668  fUnev = 1;
669  TVectorD fReadHistoDummy(fUnev);
670  TMatrixD fReadMatrixDummy(fUnev, fUnev);
671 
672  //------------------ Init fAsciiFileName
673  fAsciiFileName = "?";
674 
675 } // end of Init()
676 
677 //----------------------------------------------------------------------------------------
678 void TEcnaHistos::SetEcalSubDetector(const TString& SubDet)
679 {
680  // Set Subdetector (EB or EE)
681 
682  Int_t MaxCar = fgMaxCar;
683  fFlagSubDet.Resize(MaxCar);
684  fFlagSubDet = fEcal->GetEcalSubDetector(); // fFlagSubDet = "EB" or "EE"
685 
686  //.................................. Init specific EB/EE parameters ( SetEcalSubDetector(...) )
687  MaxCar = fgMaxCar;
688  fFapStexName.Resize(MaxCar);
689  fFapStexName = "no info for Stex";
690  MaxCar = fgMaxCar;
691  fFapStinName.Resize(MaxCar);
692  fFapStinName = "no info for Stin";
693  MaxCar = fgMaxCar;
694  fFapXtalName.Resize(MaxCar);
695  fFapXtalName = "no info for Xtal";
696  MaxCar = fgMaxCar;
697  fFapEchaName.Resize(MaxCar);
698  fFapEchaName = "no info for Echa";
699 
700  if( fFlagSubDet == "EB" )
701  {
702  fFapStexName = "SM";
703  fFapStinName = "Tower";
704  fFapXtalName = "Xtal";
705  fFapEchaName = "Chan";
707  }
708 
709  if( fFlagSubDet == "EE" )
710  {
711  fFapStexName = "Dee";
712  fFapStinName = "SC";
713  fFapXtalName = "Xtal";
714  fFapEchaName = "Chan";
716  fFapStexDir = "right";
717  fFapStinQuadType = "top";
718  }
719 
720  //........................ init code plot type (SetEcalSubDetector)
721  MaxCar = fgMaxCar;
722  fOnlyOnePlot.Resize(MaxCar);
724 
725  MaxCar = fgMaxCar;
726  fSeveralPlot.Resize(MaxCar);
728 
729  MaxCar = fgMaxCar;
730  fSameOnePlot.Resize(MaxCar);
732 
733  MaxCar = fgMaxCar;
734  fAllXtalsInStinPlot.Resize(MaxCar);
736 
738 
739 } // ---------------- end of SetEcalSubDetector(...) ----------------
740 
741 //--------------------------------------------------------------------------------------------
742 //
743 // FileParameters(s)(...)
744 //
745 //--------------------------------------------------------------------------------------------
746 
747 //===> DON'T SUPPRESS: THESE METHODS ARE CALLED BY TEcnaGui and can be called by any other program
748 void TEcnaHistos::FileParameters(const TString& xArgAnaType, const Int_t& xArgNbOfSamples,
749  const Int_t& xArgRunNumber, const Int_t& xArgFirstReqEvtNumber,
750  const Int_t& xArgLastReqEvtNumber, const Int_t& xArgReqNbOfEvts,
751  const Int_t& xArgStexNumber)
752 {
753 // Set parameters for reading the right ECNA results file
754 
755  fFapAnaType = xArgAnaType;
756  fFapNbOfSamples = xArgNbOfSamples;
757  fFapRunNumber = xArgRunNumber;
758  fFapFirstReqEvtNumber = xArgFirstReqEvtNumber;
759  fFapLastReqEvtNumber = xArgLastReqEvtNumber;
760  fFapReqNbOfEvts = xArgReqNbOfEvts;
761  fFapStexNumber = xArgStexNumber;
762 
763  InitSpecParBeforeFileReading(); // SpecPar = Special Parameters (dates, times, run types)
764 }
765 
767 {
768 // Set parameters for reading the right ECNA results file
769 
770  InitSpecParBeforeFileReading(); // SpecPar = Special Parameters (dates, times, run types)
771 
772  //............... Filename parameter values
773  fFapAnaType = MyRootFile->GetAnalysisName();
774  fFapNbOfSamples = MyRootFile->GetNbOfSamples();
775  fFapRunNumber = MyRootFile->GetRunNumber();
778  fFapReqNbOfEvts = MyRootFile->GetReqNbOfEvts();
779  fFapStexNumber = MyRootFile->GetStexNumber();
780 
781  //............... parameter values from file contents
782  fStartDate = MyRootFile->GetStartDate();
783  fStopDate = MyRootFile->GetStopDate();
784  fRunType = MyRootFile->GetRunType();
785 
787 }
788 
789 //=============================================================================================
790 // Set general title
791 // Set lin or log scale on X or Y axis
792 // Set color palette
793 // Set start and stop date
794 // Set run type
795 //=============================================================================================
796 //............................................................................................
797 void TEcnaHistos::GeneralTitle(const TString& title)
798 {
799  fFlagGeneralTitle = title.Data();
800 }
801 void TEcnaHistos::SetHistoScaleX(const TString& option_scale)
802 {
803  fFlagScaleX = "LIN";
804  if ( option_scale == "LOG" ){fFlagScaleX = "LOG";}
805 }
806 void TEcnaHistos::SetHistoScaleY(const TString& option_scale)
807 {
808  fFlagScaleY = "LIN";
809  if ( option_scale == "LOG" ){fFlagScaleY = "LOG";}
810 }
811 void TEcnaHistos::SetHistoColorPalette (const TString& option_palette)
812 {
813  fFlagColPal = "Black/Red/Blue";
814  if ( !(option_palette == "Rainbow" || option_palette == "rainbow") ){fFlagColPal = "Black/Red/Blue";}
815  if ( option_palette == "Rainbow" || option_palette == "rainbow" ){fFlagColPal = "Rainbow";}
816 }
817 void TEcnaHistos::StartStopDate(const TString& start_date, const TString& stop_date)
818 {
819  fStartDate = start_date.Data();
820  fStopDate = stop_date.Data();
821 }
822 void TEcnaHistos::RunType(const TString& run_type)
823 {
824  fRunType = run_type.Data();
825 }
826 void TEcnaHistos::NumberOfEvents(const Int_t& nb_of_evts)
827 {
828  fFapNbOfEvts = nb_of_evts;
829 }
830 //====================== return status for root file and data existence
833 
834 //=======================================================================================
835 //
836 // ( R e a d A n d ) P l o t (1D , 2D , History)
837 //
838 //=======================================================================================
839 //---------------------------------------------------------------------------------------------
840 // TechHistoCode list modification (06/10/09)
841 //
842 // D = Detector Plot ChNb = Channel Number
843 // ChDs = Channel Distribution (Y projection)
844 //
845 // H = History Plot Date = date in format YYMMJJ hhmmss
846 // RuDs = Run distribution
847 //
848 // old code new code std code X std code Y (std = standard)
849 //
850 // * 1 H1NbOfEvtsGlobal D_NOE_ChNb Xtal NOE NOE = Number Of Events
851 // * 2 H1NbOfEvtsProj D_NOE_ChDs NOE NOX NOX = Number Of Xtals
852 // * 3 H1EvEvGlobal D_Ped_ChNb Xtal Ped Ped = Pedestal
853 // * 4 H1EvEvProj D_Ped_ChDs Ped NOX
854 // * 5 H1EvSigGlobal D_TNo_ChNb Xtal TNo TNo = Total Noise
855 // * 6 H1EvSigProj D_TNo_ChDs TNo NOX
856 // * 7 H1SigEvGlobal D_LFN_ChNb Xtal LFN LFN = Low Frequency noise
857 // * 8 H1SigEvProj D_LFN_ChDs LFN NOX
858 // * 9 H1SigSigGlobal D_HFN_ChNb Xtal HFN HFN = High Frequency noise
859 // * 10 H1SigSigProj D_HFN_ChDs HFN NOX
860 // * 11 H1EvCorssGlobal D_MCs_ChNb Xtal MCs MCs = Mean correlations between samples
861 // * 12 H1EvCorssProj D_MCs_ChDs MCs NOX
862 // * 13 H1SigCorssGlobal D_SCs_ChNb Xtal SCs SCs = Sigma of the correlations between samples
863 // * 14 H1SigCorssProj D_SCs_ChDs SCs NOX
864 // * 15 Ev D_MSp_SpNb Sample MSp MSp = Means of the samples
865 // * 16 EvProj D_MSp_SpDs MSp NOS NOS = Number of samples
866 // * 17 Sigma D_SSp_SpNb Sample SSp SSp = Sigmas of the samples
867 // * 18 SigmaProj D_SSp_SpDs SSp NOS
868 // * 19 SampTime D_Adc_EvNb Event Adc Adc = ADC count as a function of Event number
869 // * 20 AdcProj D_Adc_EvDs Adc NOE EvDs = Event distribution
870 // * 21 EvolEvEv H_Ped_Date Time Ped Time = date YY/MM/DD hh:mm:ss
871 // * 22 EvolEvEvProj H_Ped_RuDs Ped NOR NOR = Number Of Runs
872 // * 23 EvolEvSig H_TNo_Date Time TNo
873 // * 24 EvolEvSigProj H_TNo_RuDs TNo NOR
874 // * 25 EvolSigEv H_LFN_Date Time LFN
875 // * 26 EvolSigEvProj H_LFN_RuDs LFN NOR
876 // * 27 EvolSigSig H_HFN_Date Time HFN
877 // * 28 EvolSigSigProj H_HFN_RuDs HFN NOR
878 // * 29 EvolEvCorss H_MCs_Date Time MCs
879 // * 30 EvolEvCorssProj H_MCs_RuDs MCs NOR
880 // * 31 EvolSigCorss H_SCs_Date Time SCs
881 // * 32 EvolSigCorssProj H_SCs_RuDs SCs NOR
882 //
883 //---------------------------------------------------------------------------------------------
884 
885 //---------------------------------------------------------------------------------------
886 //
887 // (ReadAnd)PlotMatrix
888 //
889 //---------------------------------------------------------------------------------------
890 //................................ Corcc[for 1 Stex] (big matrix), Cortt[for 1 Stex]
891 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
892  const TString& UserCorOrCov, const TString& UserBetweenWhat)
893 {PlotMatrix(read_matrix_corcc, UserCorOrCov, UserBetweenWhat, "");}
894 
895 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
896  const TString& UserCorOrCov, const TString& UserBetweenWhat,
897  const TString& UserPlotOption)
898 {
899  TString CallingMethod = "2D";
900 
901  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
902 
903  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
904  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
905 
906  if( BetweenWhat != "?" && CorOrCov != "?" )
907  {
908  if( BetweenWhat == "MttLF" || BetweenWhat == "MttHF" )
909  {
910  fAlreadyRead = 1;
911  ViewMatrix(read_matrix_corcc, fAlreadyRead,
912  fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
913  }
914  if( BetweenWhat == "MccLF" ){StexHocoVecoLHFCorcc("LF");} // forced to Read file and Plot
915  if( BetweenWhat == "MccHF" ){StexHocoVecoLHFCorcc("HF");} // forced to Read file and Plot
916  }
917  else
918  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
919  cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << endl;}
920 }
921 
922 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat)
923 {PlotMatrix(UserCorOrCov, UserBetweenWhat, "");}
924 
925 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
926  const TString& UserPlotOption)
927 {
928  TString CallingMethod = "2D";
929 
930  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
931 
932  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
933  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
934 
935  if( BetweenWhat != "?" && CorOrCov != "?" )
936  {
937  if( BetweenWhat == "MttLF" || BetweenWhat == "MttHF" )
938  {
940  fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
941  }
942  if( BetweenWhat == "MccLF" ){StexHocoVecoLHFCorcc("LF");} // Plot only
943  if( BetweenWhat == "MccHF" ){StexHocoVecoLHFCorcc("HF");} // Plot only
944  }
945  else
946  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
947  cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << endl;}
948 }
949 
950 //....................................... Corcc for channels (cStexStin_A, cStexStin_B)
951 // Corss, Covss for one channel (-> i0StinEcha)
952 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
953  const TString& UserCorOrCov, const TString& UserBetweenWhat,
954  const Int_t& arg_n1, const Int_t& arg_n2)
955 {PlotMatrix(read_matrix, UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");}
956 
957 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
958  const TString& UserCorOrCov, const TString& UserBetweenWhat,
959  const Int_t& arg_n1, const Int_t& arg_n2,
960  const TString& UserPlotOption)
961 {
962  TString CallingMethod = "2D";
963 
964  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
965 
966  TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
967  TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
968 
969  if( BetweenWhat != "?" && CorOrCov != "?" )
970  {
971  if( BetweenWhat == "MccLF" || BetweenWhat == "MccHF" )
972  {
973  Int_t cStexStin_A = arg_n1;
974  Int_t cStexStin_B = arg_n2;
975  fAlreadyRead = 1;
976  ViewMatrix(read_matrix, fAlreadyRead,
977  cStexStin_A, cStexStin_B, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
978  }
979 
980  if( BetweenWhat == "Mss" )
981  {
982  Int_t n1StexStin = arg_n1;
983  Int_t i0StinEcha = arg_n2;
984  if( fFlagSubDet == "EE" ){n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);}
985  fAlreadyRead = 1;
986  ViewMatrix(read_matrix, fAlreadyRead,
987  n1StexStin, fZerv, i0StinEcha, CorOrCov, BetweenWhat, StandardPlotOption);
988  }
989  }
990  else
991  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
992  cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << endl;}
993 }
994 
995 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
996  const Int_t& arg_n1, const Int_t& arg_n2)
997 {PlotMatrix(UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");}
998 
999 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat,
1000  const Int_t& arg_n1, const Int_t& arg_n2,
1001  const TString& UserPlotOption)
1002 {
1003  TString CallingMethod = "2D";
1004 
1005  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1006 
1007  TString StandardBetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
1008  TString StandardCorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
1009 
1010  if( StandardBetweenWhat != "?" && StandardCorOrCov != "?" )
1011  {
1012  if( StandardBetweenWhat == "MccLF" || StandardBetweenWhat == "MccHF" )
1013  {
1014  Int_t cStexStin_A = arg_n1;
1015  Int_t cStexStin_B = arg_n2;
1017  cStexStin_A, cStexStin_B, fZerv, StandardCorOrCov, StandardBetweenWhat, StandardPlotOption);
1018  }
1019 
1020  if( StandardBetweenWhat == "Mss" )
1021  {
1022  Int_t n1StexStin = arg_n1;
1023  Int_t i0StinEcha = arg_n2;
1024  if( fFlagSubDet == "EE" ){n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);}
1025 
1027  n1StexStin, fZerv, i0StinEcha, StandardCorOrCov, StandardBetweenWhat, StandardPlotOption);
1028  }
1029  }
1030  else
1031  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1032  cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << endl;}
1033 }
1034 
1035 //---------------------------------------------------------------------------------------
1036 //
1037 // (ReadAnd)PlotDetector
1038 //
1039 //---------------------------------------------------------------------------------------
1040 //.................................... 2D plots for Stex OR Stas
1041 void TEcnaHistos::PlotDetector(const TString& UserHistoCode, const TString& UserDetector)
1042 {
1043  TString CallingMethod = "2DS";
1044 
1045  TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1046  if( StandardHistoCode != "?" )
1047  {
1048  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1049  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1050  if( StandardDetectorCode != "?" )
1051  {
1052  //if( StandardDetectorCode == "SM" || StandardDetectorCode == "EB" )
1053  // {fEcal->SetEcalSubDetector("EB");}
1054  //if( StandardDetectorCode == "Dee" || StandardDetectorCode == "EE" )
1055  // {fEcal->SetEcalSubDetector("EE");}
1056 
1057  if( StandardDetectorCode == "SM" || StandardDetectorCode == "Dee" )
1058  {ViewStex(fReadHistoDummy, fTobeRead, TechHistoCode);}
1059  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" )
1060  {ViewStas(fReadHistoDummy, fTobeRead, TechHistoCode);}
1061  }
1062  else
1063  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1064  cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << endl;}
1065  }
1066  else
1067  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1068  cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << endl;}
1069 }
1070 
1071 void TEcnaHistos::PlotDetector(const TVectorD& read_histo, const TString& UserHistoCode, const TString& UserDetector)
1072 {
1073  TString CallingMethod = "2DS";
1074 
1075  TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1076  if( StandardHistoCode != "?" )
1077  {
1078  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1079  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1080  if( StandardDetectorCode != "?" )
1081  {
1082  fAlreadyRead = 1;
1083 
1084  //if( StandardDetectorCode == "SM" || StandardDetectorCode == "EB" )
1085  // {fEcal->SetEcalSubDetector("EB");}
1086  //if( StandardDetectorCode == "Dee" || StandardDetectorCode == "EE" )
1087  // {fEcal->SetEcalSubDetector("EE");}
1088 
1089  if( StandardDetectorCode == "SM" || StandardDetectorCode == "Dee" )
1090  {ViewStex(read_histo, fAlreadyRead, TechHistoCode);}
1091  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" )
1092  {ViewStas(read_histo, fAlreadyRead, TechHistoCode);}
1093  }
1094  else
1095  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1096  cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << endl;}
1097  }
1098  else
1099  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1100  cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << endl;}
1101 }
1102 
1103 //---------------------------------------------------------------------------------------
1104 //
1105 // (ReadAnd)Plot1DHisto
1106 //
1107 //---------------------------------------------------------------------------------------
1108 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1109  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1110  const TString& UserDetector)
1111 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, UserDetector, "");}
1112 
1113 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1114  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1115  const TString& UserDetector,
1116  const TString& UserPlotOption)
1117 {
1118  TString CallingMethod = "1D";
1119 
1120  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1121 
1122  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1123  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1124 
1125  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1126  {
1127  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1128  if( fAlreadyRead > 1 ){fAlreadyRead = 1;}
1129  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1130  if( StandardDetectorCode != "?" )
1131  {
1132  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" ){fFapStexNumber = 0;}
1133  ViewHisto(InputHisto, fAlreadyRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1134  }
1135  else
1136  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1137  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1138  }
1139  else
1140  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1141  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1142 }
1143 
1144 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1145  const TString& UserDetector)
1146 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, UserDetector, "");}
1147 
1148 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1149  const TString& UserDetector, const TString& UserPlotOption)
1150 {
1151  TString CallingMethod = "1D";
1152 
1153  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1154 
1155  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1156  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1157 
1158  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1159  {
1160  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1161  TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1162  if( StandardDetectorCode != "?" )
1163  {
1164  if( StandardDetectorCode == "EB" || StandardDetectorCode == "EE" ){fFapStexNumber = 0;}
1165  ViewHisto(fReadHistoDummy, fTobeRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1166  }
1167  else
1168  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1169  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1170  }
1171  else
1172  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1173  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1174 }
1175 
1176 
1177 
1178 //=> BUG SCRAM? Si on enleve la methode ci-dessous, ca passe a la compilation de test/EcnaHistosExample2.cc
1179 // (qui appelle cette methode) et ca se plante a l'execution (voir test/TEcnaHistosExample2.cc).
1180 #define PLUD
1181 #ifdef PLUD
1182 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1183  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1184  const Int_t& n1StexStin)
1185 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, "");}
1186 
1187 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1188  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1189  const Int_t& n1StexStin,
1190  const TString& UserPlotOption)
1191 {
1192  TString CallingMethod = "1DX";
1193  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1194  Int_t i0StinEcha = 0;
1195  Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, StandardPlotOption);
1196 }
1197 #endif // PLUD
1198 
1199 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1200  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1201  const Int_t& n1StexStin, const Int_t& i0StinEcha)
1202 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");}
1203 
1204 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1205  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1206  const Int_t& n1StexStin, const Int_t& i0StinEcha,
1207  const TString& UserPlotOption)
1208 {
1209  TString CallingMethod = "1D";
1210  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1211  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1212  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1213 
1214  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1215 
1216  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1217  {
1218  fAlreadyRead = 1;
1219  if( StandardPlotOption != fAllXtalsInStinPlot )
1220  {
1221  ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1222  }
1223 
1224  if( StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin() )
1225  {
1226  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp" )
1227  {XtalSamplesEv(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1228  if( Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS" )
1229  {EvSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1230  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp" )
1231  {XtalSamplesSigma(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1232  if( Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS" )
1233  {SigmaSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1234  }
1235  }
1236  else
1237  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1238  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1239 }
1240 
1241 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1242  const Int_t& n1StexStin, const Int_t& i0StinEcha)
1243 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");}
1244 
1245 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1246  const Int_t& n1StexStin, const Int_t& i0StinEcha,
1247  const TString& UserPlotOption)
1248 {
1249  TString CallingMethod = "1D";
1250 
1251  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1252 
1253  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1254  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1255 
1256  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1257  {
1258  if( StandardPlotOption != fAllXtalsInStinPlot )
1259  {
1260  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1261  ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1262  }
1263  if( StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin() )
1264  {
1265  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp" )
1266  {XtalSamplesEv(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1267  if( Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS" )
1268  {EvSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1269  if( Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp" )
1270  {XtalSamplesSigma(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1271  if( Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS" )
1272  {SigmaSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);}
1273  }
1274  }
1275  else
1276  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1277  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1278 }
1279 
1280 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1281  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1282  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample)
1283 {Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");}
1284 
1285 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1286  const TString& User_X_Quantity, const TString& User_Y_Quantity,
1287  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample,
1288  const TString& UserPlotOption)
1289 {
1290  TString CallingMethod = "1D";
1291 
1292  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1293 
1294  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1295  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1296 
1297  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1298 
1299  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1300  {
1301  Int_t i0Sample = n1Sample-1;
1302  fAlreadyRead = 1;
1303  ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1304  }
1305  else
1306  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1307  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1308 }
1309 
1310 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1311  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample)
1312 {Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");}
1313 
1314 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1315  const Int_t& n1StexStin, const Int_t& i0StinEcha, const Int_t& n1Sample,
1316  const TString& UserPlotOption)
1317 {
1318  TString CallingMethod = "1D";
1319 
1320  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1321 
1322  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1323  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1324 
1325  Int_t i0Sample = n1Sample-1;
1326 
1327  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1328  {
1329  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1330  ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1331  }
1332  else
1333  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1334  cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << endl;}
1335 }
1336 
1337 //---------------------------------------------------------------------------------------
1338 //
1339 // (ReadAnd)PlotHistory
1340 //
1341 //---------------------------------------------------------------------------------------
1342 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1343  const TString& list_of_run_file_name,
1344  const Int_t& StexStin_A, const Int_t& i0StinEcha)
1345 {PlotHistory(User_X_Quantity, User_Y_Quantity, list_of_run_file_name, StexStin_A, i0StinEcha, "");}
1346 
1347 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity, const TString& User_Y_Quantity,
1348  const TString& list_of_run_file_name,
1349  const Int_t& StexStin_A, const Int_t& i0StinEcha,
1350  const TString& UserPlotOption)
1351 {
1352  TString CallingMethod = "Time";
1353 
1354  TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1355 
1356  TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1357  TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1358 
1359  if( Standard_X_Quantity != "?" && Standard_Y_Quantity != "?" )
1360  {
1361  TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1362  ViewHistime(list_of_run_file_name, StexStin_A, i0StinEcha, TechHistoCode, StandardPlotOption);
1363  }
1364  else
1365  {fFlagUserHistoMin = "OFF"; fFlagUserHistoMax = "OFF";
1366  cout << "!TEcnaHistos::PlotHistory(...)> Histo cannot be reached." << fTTBELL << endl;}
1367 }
1368 
1369 //=============================================================================================
1370 //
1371 // " V I E W " M E T H O D S
1372 //
1373 //=============================================================================================
1374 
1375 //=============================================================================================================
1376 //
1377 // ViewMatrix(***)
1378 //
1379 // arg_read_matrix: 2D array
1380 // arg_AlreadyRead: =1 <=> use arg_read_matrix
1381 // =0 <=> read the 2D array in this method with TEcnaRead
1382 // StexStin_A: tower number in SM (if EB) OR SC "ECNA" number in Dee (if EE)
1383 // StexStin_B: tower' number in SM (if EB) OR SC' "ECNA" number in Dee (if EE)
1384 // MatrixBinIndex: channel number in tower (if EB) OR in SC (if EE)
1385 // CorOrCov: flag CORRELATION/COVARIANCE
1386 // BetweenWhat: flag BETWEEN SAMPLES / BETWEEN CHANNELS / BETWEEN TOWERS / BETWEEN SCs / LF, HF, ...
1387 // PlotOption: ROOT 2D histos draw options (COLZ, LEGO, ...) + additional (ASCII)
1388 //
1389 // MatrixBinIndex: = i0StinEcha if cov(s,s'), cor(s,s')
1390 // = 0 if cov(c,c'), cor(c,c'), cov(Stin,Stin'), cor(Stin,Stin')
1391 //
1392 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1393 // ViewMatrix(StexStin_A, 0, i0StinEcha, CorOrCov, "Mss", PlotOption)
1394 // Output:
1395 // Plot of cov(s,s') or cor(s,s') matrix for i0StinEcha of StexStin_A
1396 //
1397 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1398 // ViewMatrix(StexStin_A, StexStin_B, 0, CorOrCov, "Mcc", PlotOption)
1399 // Output:
1400 // Plot LF-HF Corcc matrix for Stins: (StexStin_A, StexStin_B)
1401 //
1402 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1403 // ViewMatrix( 0, 0, 0, CorOrCov, "Mcc", PlotOption)
1404 // Output:
1405 // Plot of LF-HF Corcc matrix for Stex (big matrix)
1406 //
1407 // ViewMatrix(StexStin_A, StexStin_B, MatrixBinIndex, CorOrCov, BetweenWhat, PlotOption)
1408 // ViewMatrix( 0, 0, 0, CorOrCov, "Mtt", PlotOption)
1409 // Output:
1410 // Plot of LF-HF Cortt matrix
1411 //
1412 //=============================================================================================================
1413 void TEcnaHistos::ViewMatrix(const TMatrixD& arg_read_matrix, const Int_t& arg_AlreadyRead,
1414  const Int_t& StexStin_A, const Int_t& StexStin_B,
1415  const Int_t& MatrixBinIndex, const TString& CorOrCov,
1416  const TString& BetweenWhat, const TString& PlotOption)
1417 {
1418  //Plot correlation or covariance matrix between samples or channels or Stins
1419 
1420  if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) )
1421  {
1422  Bool_t OKArray = kFALSE;
1423  Bool_t OKData = kFALSE;
1424  TVectorD vStin(fEcal->MaxStinEcnaInStex());
1425 
1426  if( arg_AlreadyRead == fTobeRead )
1427  {
1433  OKArray = fMyRootFile->LookAtRootFile();
1434  if( OKArray == kTRUE )
1435  {
1437  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
1438  // cout << "*TEcnaHistos::ViewMatrix(...)> Data are analyzed from file ----> "
1439  // << fp_name_short << endl;
1440  //...................................................................... (ViewMatrix)
1441  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=(Double_t)0.;}
1443 
1447 
1448  if( fMyRootFile->DataExist() == kTRUE ){OKData = kTRUE;}
1449  }
1450 
1451  }
1452  if( arg_AlreadyRead >= 1 )
1453  {
1454  OKArray = kTRUE;
1455  OKData = kTRUE;
1456  if( fFlagSubDet == "EB")
1457  {
1458  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=i;}
1459  }
1460  if( fFlagSubDet == "EE")
1461  {
1462  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++)
1463  {vStin(i)= fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i));}
1464  }
1465  }
1466 
1467  if ( OKArray == kTRUE ) // (ViewMatrix)
1468  {
1469  fStatusFileFound = kTRUE;
1470 
1471  if( OKData == kTRUE )
1472  {
1473  fStatusDataExist = kTRUE;
1474 
1475  Int_t Stin_X_ok = 0;
1476  Int_t Stin_Y_ok = 0;
1477 
1478  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) )
1479  {Stin_X_ok = 1; Stin_Y_ok = 1;}
1480  if( BetweenWhat == fBetweenSamples )
1481  {Stin_Y_ok = 1;}
1482 
1483  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
1484  {
1485  if ( vStin(index_Stin) == StexStin_A ){Stin_X_ok = 1;}
1486  if ( vStin(index_Stin) == StexStin_B ){Stin_Y_ok = 1;}
1487  }
1488  //................................................................. (ViewMatrix)
1489  if( Stin_X_ok == 1 && Stin_Y_ok == 1 )
1490  {
1491  Int_t MatSize = -1;
1492  Int_t ReadMatSize = -1;
1493  Int_t i0StinEcha = -1;
1494 
1495  //-------------------------- Set values of ReadMatSize, MatSize, i0StinEcha
1496  if( BetweenWhat == fBetweenSamples )
1497  {ReadMatSize = fFapNbOfSamples; MatSize = fEcal->MaxSampADC(); i0StinEcha=(Int_t)MatrixBinIndex;}
1498 
1499  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1500  {ReadMatSize = fEcal->MaxCrysInStin(); MatSize = fEcal->MaxCrysInStin(); /*i0Sample=MatrixBinIndex;*/}
1501 
1502  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) )
1503  {ReadMatSize = fEcal->MaxStinEcnaInStex(); MatSize = fEcal->MaxStinInStex();}
1504 
1505  //------------------------------------------------------------------------------------- (ViewMatrix)
1506  if( ( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins ) ||
1507  ( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels
1508  /* && (i0Sample >= 0) && (i0Sample < fFapNbOfSamples ) */ ) ||
1509  ( (BetweenWhat == fBetweenSamples) && (i0StinEcha >= 0) && (i0StinEcha < fEcal->MaxCrysInStin()) ) )
1510  {
1511  TMatrixD read_matrix(ReadMatSize, ReadMatSize);
1512  for(Int_t i=0; i-ReadMatSize<0; i++)
1513  {for(Int_t j=0; j-ReadMatSize<0; j++){read_matrix(i,j)=(Double_t)0.;}}
1514 
1515  Bool_t OKData = kFALSE;
1516  if( arg_AlreadyRead == fTobeRead )
1517  {
1518  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
1519  {read_matrix =
1520  fMyRootFile->ReadCovariancesBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);}
1521 
1522  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
1523  {read_matrix =
1524  fMyRootFile->ReadCorrelationsBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);}
1525 
1526  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCovarianceMatrix )
1527  {read_matrix =
1528  fMyRootFile->ReadLowFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1529 
1530  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix )
1531  {read_matrix =
1532  fMyRootFile->ReadLowFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1533 
1534  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCovarianceMatrix )
1535  {read_matrix =
1536  fMyRootFile->ReadHighFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1537 
1538  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix )
1539  {read_matrix =
1540  fMyRootFile->ReadHighFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);}
1541 
1542  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1543  {read_matrix =
1545 
1546  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1547  {read_matrix =
1549  }
1550 
1551  OKData = fMyRootFile->DataExist();
1552  }
1553  else
1554  {
1555  read_matrix = arg_read_matrix;
1556  OKData = kTRUE;
1557  }
1558  //.......................................................... (ViewMatrix)
1559  if( OKData == kTRUE )
1560  {
1561  fStatusDataExist = kTRUE;
1562 
1563  if( PlotOption == "ASCII" )
1564  {
1565  WriteMatrixAscii(BetweenWhat, CorOrCov,
1566  StexStin_A, MatrixBinIndex, ReadMatSize, read_matrix);
1567  }
1568  else
1569  {
1570  //......................... matrix title (ViewMatrix)
1571  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
1572 
1573  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
1574  {sprintf(f_in_mat_tit, "Covariance(Sample, Sample')");}
1575  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
1576  {sprintf(f_in_mat_tit, "Correlation(Sample, Sample')");}
1577 
1578  if(fFlagSubDet == "EB" )
1579  {
1580  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1581  {sprintf(f_in_mat_tit,
1582  "Mean LF |Cor(Xtal,Xtal')| for each (Tower,Tower')");}
1583  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1584  {sprintf(f_in_mat_tit,
1585  "Mean HF |Cor(Xtal,Xtal')| for each (Tower,Tower')");}
1586  }
1587  if(fFlagSubDet == "EE" )
1588  {
1589  if( BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix )
1590  {sprintf(f_in_mat_tit,
1591  "Mean LF |Cor(Xtal,Xtal')| for each (SC,SC')");}
1592  if( BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix )
1593  {sprintf(f_in_mat_tit,
1594  "Mean HF |Cor(Xtal,Xtal')| for each (SC,SC')");}
1595  }
1596 
1597  if( BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix )
1598  {
1599  if( fFlagSubDet == "EB" )
1600  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");}
1601  if( fFlagSubDet == "EE" )
1602  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");}
1603  }
1604  if( BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix )
1605  {
1606  if( fFlagSubDet == "EB" )
1607  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");}
1608  if( fFlagSubDet == "EE" )
1609  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");}
1610  }
1611 
1612  //................................. Axis parameters (ViewMatrix)
1613  TString axis_x_var_name;
1614  TString axis_y_var_name;
1615 
1616  char* f_in_axis_x = new char[fgMaxCar]; fCnew++;
1617  char* f_in_axis_y = new char[fgMaxCar]; fCnew++;
1618 
1619  if( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins )
1620  {
1621  if( fFlagSubDet == "EB" )
1622  {sprintf(f_in_axis_x, " %s number ", fFapStinName.Data());}
1623  if( fFlagSubDet == "EE" )
1624  {sprintf(f_in_axis_x, " %s number for construction ", fFapStinName.Data());}
1625 
1626  axis_x_var_name = f_in_axis_x; axis_y_var_name = f_in_axis_x;
1627  }
1628  if( BetweenWhat == fBetweenSamples)
1629  {
1630  axis_x_var_name = " Sample "; axis_y_var_name = " Sample ";
1631  }
1632  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels ){
1633  sprintf(f_in_axis_x, " Crystal %s %d ", fFapStinName.Data(), StexStin_A);
1634  sprintf(f_in_axis_y, " Crystal %s %d ", fFapStinName.Data(),StexStin_B);
1635  axis_x_var_name = f_in_axis_x; axis_y_var_name = f_in_axis_y;}
1636 
1637  Int_t nb_binx = MatSize;
1638  Int_t nb_biny = MatSize;
1639  Axis_t xinf_bid = (Axis_t)0.;
1640  Axis_t xsup_bid = (Axis_t)MatSize;
1641  Axis_t yinf_bid = (Axis_t)0.;
1642  Axis_t ysup_bid = (Axis_t)MatSize;
1643 
1644  if( (fFlagSubDet == "EE") &&
1645  (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) )
1646  {
1647  if( fFapStexNumber == 1 || fFapStexNumber == 3 )
1648  {
1649  xinf_bid += fEcal->MaxStinInStex();
1650  xsup_bid += fEcal->MaxStinInStex();
1651  yinf_bid += fEcal->MaxStinInStex();
1652  ysup_bid += fEcal->MaxStinInStex();
1653  }
1654  }
1655  //................................................... histogram booking (ViewMatrix)
1656  TH2D* h_fbid0 = new TH2D("bidim", f_in_mat_tit,
1657  nb_binx, xinf_bid, xsup_bid,
1658  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
1659  h_fbid0->Reset();
1660 
1661  h_fbid0->GetXaxis()->SetTitle(axis_x_var_name);
1662  h_fbid0->GetYaxis()->SetTitle(axis_y_var_name);
1663 
1664  //------------------------------------------------ F I L L H I S T O (ViewMatrix)
1665  if( (fFlagSubDet == "EE") &&
1666  (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) )
1667  {
1668  for(Int_t i = 0 ; i < ReadMatSize ; i++)
1669  {
1670  for(Int_t j = 0 ; j < ReadMatSize ; j++)
1671  {
1672  Int_t ip = i+1;
1673  Double_t xi_bid =
1675  Int_t jp = j+1;
1676  Double_t xj_bid =
1678  if( xi_bid > 0 && xj_bid > 0 )
1679  {
1680  Int_t xi_bid_m = xi_bid-1;
1681  Int_t xj_bid_m = xj_bid-1;
1682  h_fbid0->Fill(xi_bid_m, xj_bid_m, read_matrix(i,j));
1683  }
1684  }
1685  }
1686  }
1687  else
1688  {
1689  for(Int_t i = 0 ; i - ReadMatSize < 0 ; i++)
1690  {
1691  Double_t xi = (Double_t)i;
1692  for(Int_t j = 0 ; j < ReadMatSize ; j++)
1693  {
1694  Double_t xj = (Double_t)j;
1695  Double_t mat_val = (Double_t)read_matrix(i,j);
1696  h_fbid0->Fill(xi, xj, (Double_t)mat_val);
1697  }
1698  }
1699  }
1700  //--------------- H I S T O M I N / M A X M A N A G E M E N T (ViewMatrix)
1701 
1702  //................................ Put histo min max values
1703  TString quantity_code = "D_MCs_ChNb";
1704  if ( CorOrCov == fCorrelationMatrix )
1705  {
1706  if( BetweenWhat == fBetweenSamples ){quantity_code = "D_MCs_ChNb";}
1707 
1708  if( BetweenWhat == fLFBetweenChannels ){quantity_code = "H2LFccMosMatrix";}
1709  if( BetweenWhat == fHFBetweenChannels ){quantity_code = "H2HFccMosMatrix";}
1710 
1711  if( BetweenWhat == fLFBetweenStins ){quantity_code = "H2LFccMosMatrix";}
1712  if( BetweenWhat == fHFBetweenStins ){quantity_code = "H2HFccMosMatrix";}
1713  }
1714  if( CorOrCov == fCovarianceMatrix ){quantity_code = "H2HFccMosMatrix";}
1715  //.......... default if flag not set to "ON"
1716  SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
1717  SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
1718 
1719  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
1720  //................................. User's min and/or max (ViewMatrix)
1721  if( fFlagUserHistoMin == "ON" )
1722  {SetYminMemoFromValue(quantity_code, fUserHistoMin); fFlagUserHistoMin = "OFF";}
1723  if( fFlagUserHistoMax == "ON" )
1724  {SetYmaxMemoFromValue(quantity_code, fUserHistoMax); fFlagUserHistoMax = "OFF";}
1725  //................................. automatic min and/or max
1726  if( fFlagUserHistoMin == "AUTO" )
1727  {SetYminMemoFromValue(quantity_code, h_fbid0->GetMinimum()); fFlagUserHistoMin = "OFF";}
1728  if( fFlagUserHistoMax == "AUTO" )
1729  {SetYmaxMemoFromValue(quantity_code, h_fbid0->GetMaximum()); fFlagUserHistoMax = "OFF";}
1730  //...................................... histo set ymin and ymax (ViewMatrix)
1731  if( CorOrCov == fCorrelationMatrix )
1732  {
1733  if(BetweenWhat == fBetweenSamples)
1734  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_MCs_ChNb");}
1735  if( BetweenWhat == fLFBetweenStins || BetweenWhat == fLFBetweenChannels )
1736  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2LFccMosMatrix");}
1737  if( BetweenWhat == fHFBetweenStins || BetweenWhat == fHFBetweenChannels )
1738  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");}
1739  //************************** A GARDER EN RESERVE ******************************
1740  //............. special contour level for correlations (square root wise scale)
1741  // Int_t nb_niv = 9;
1742  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
1743  // SqrtContourLevels(nb_niv, &cont_niv[0]);
1744  // h_fbid0->SetContour(nb_niv, &cont_niv[0]);
1745  // delete [] cont_niv; fCdelete++;
1746  //******************************** (FIN RESERVE) ******************************
1747  }
1748  if( CorOrCov == fCovarianceMatrix )
1749  {
1750  if (BetweenWhat == fBetweenSamples)
1751  {SetYminMemoFromPreviousMemo("D_TNo_ChNb"); // covariance => same level as sigmas
1752  SetYmaxMemoFromPreviousMemo("D_TNo_ChNb");
1753  SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_TNo_ChNb");}
1754  if ( BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins ||
1755  BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1756  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");}
1757  }
1758 
1759  // ----------------------------------------------- P L O T S (ViewMatrix)
1760  char* f_in = new char[fgMaxCar]; fCnew++;
1761  //...................... Taille/format canvas
1762  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
1763  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
1764 
1765  //............................. options generales
1766  TString HistoType;
1767  Int_t MaxCar = fgMaxCar;
1768  HistoType.Resize(MaxCar);
1769  HistoType = "(no quantity type info)";
1770 
1771  if (PlotOption == "COLZ" ){HistoType = "colz";}
1772  if (PlotOption == "BOX" ){HistoType = "colz";}
1773  if (PlotOption == "TEXT" ){HistoType = "colz";}
1774  if (PlotOption == "CONTZ" ){HistoType = "colz";}
1775  if (PlotOption == "LEGO2Z"){HistoType = "lego";}
1776  if (PlotOption == "SURF1Z"){HistoType = "surf";}
1777  if (PlotOption == "SURF2Z"){HistoType = "surf";}
1778  if (PlotOption == "SURF3Z"){HistoType = "surf";}
1779  if (PlotOption == "SURF4" ){HistoType = "surf";}
1780 
1781  if( fFlagSubDet == "EB" )
1782  {
1784  SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1785  }
1786  if( fFlagSubDet == "EE" )
1787  {
1790  SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1791  }
1792 
1793  //---------------------------------------- Canvas name (ViewMatrix)
1794  TString name_cov_cor;
1795  MaxCar = fgMaxCar;
1796  name_cov_cor.Resize(MaxCar);
1797  name_cov_cor = "?";
1798  if( CorOrCov == fCovarianceMatrix){name_cov_cor = "Covariance";}
1799  if( CorOrCov == fCorrelationMatrix){name_cov_cor = "Correlation";}
1800 
1801  TString name_chan_samp;
1802  MaxCar = fgMaxCar;
1803  name_chan_samp.Resize(MaxCar);
1804  name_chan_samp = "?";
1805 
1806  if( BetweenWhat == fLFBetweenStins ){name_chan_samp = "LFccMos";}
1807  if( BetweenWhat == fHFBetweenStins ){name_chan_samp = "HFccMos"; }
1808 
1809  if( BetweenWhat == fLFBetweenChannels ){name_chan_samp = "LF_cc";}
1810  if( BetweenWhat == fHFBetweenChannels ){name_chan_samp = "HF_cc";}
1811 
1812  if(BetweenWhat == fBetweenSamples)
1813  {
1814  name_chan_samp = "Between_Samples"; // MatrixBinIndex = i0StinEcha
1815  }
1816 
1817  TString name_visu;
1818  MaxCar = fgMaxCar;
1819  name_visu.Resize(MaxCar);
1820  name_visu = "?";
1821 
1822  name_visu = PlotOption;
1823 
1824  if( (BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) ){
1825  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s",
1826  name_cov_cor.Data(), name_chan_samp.Data(),
1829  fFapStexName.Data(), fFapStexNumber,
1830  name_visu.Data());}
1831 
1832  if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels ){
1833  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_%s",
1834  name_cov_cor.Data(), name_chan_samp.Data(),
1837  fFapStexName.Data(), fFapStexNumber,
1838  fFapStexName.Data(), StexStin_A, fFapStexName.Data(), StexStin_B,
1839  name_visu.Data());}
1840 
1841  if( BetweenWhat == fBetweenSamples ){
1842  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_ElecChannel_%d_%s",
1843  name_cov_cor.Data(), name_chan_samp.Data(),
1846  fFapStexName.Data(), fFapStexNumber,
1847  fFapStexName.Data(), StexStin_A, fFapStexName.Data(), StexStin_B,
1848  MatrixBinIndex,
1849  name_visu.Data());}
1850 
1851  //---------------------------------------------------------- (ViewMatrix)
1852 
1853  SetHistoPresentation((TH1D*)h_fbid0, HistoType);
1854  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
1855  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
1856 
1857  // cout << "*TEcnaHistos::ViewMatrix(...)> Plot is displayed on canvas ----> "
1858  // << fCurrentCanvasName << endl;
1859  // cout << "*TEcnaHistos::ViewMatrix(...)> fCurrentCanvas = " << fCurrentCanvas << endl;
1860 
1861  delete [] f_in; f_in = 0; fCdelete++;
1862 
1863  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
1864  fPavComStex->Draw();
1865 
1866  if(BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
1867  {fPavComStin->Draw();}
1868  if(BetweenWhat == fBetweenSamples)
1869  {fPavComStin->Draw(); fPavComXtal->Draw();}
1870 
1871  fPavComAnaRun->Draw();
1872  fPavComNbOfEvts->Draw();
1873 
1874  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
1875  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
1876  MainCanvas->Divide(1, 1, x_margin, y_margin);
1877  gPad->cd(1);
1878 
1879  //---------------------------------------------------------- (ViewMatrix)
1880  Int_t logy = 0;
1881  gPad->SetLogy(logy);
1882  if( (BetweenWhat == fLFBetweenStins) ||
1883  (BetweenWhat == fHFBetweenStins) ){gPad->SetGrid(1,1);}
1884  h_fbid0->DrawCopy(PlotOption);
1885  h_fbid0->SetStats((Bool_t)1);
1886  gPad->Update();
1887  h_fbid0->Delete(); h_fbid0 = 0; fCdeleteRoot++;
1888 
1889  //MainCanvas->Delete(); fCdeleteRoot++;
1890  delete [] f_in_axis_x; f_in_axis_x = 0; fCdelete++;
1891  delete [] f_in_axis_y; f_in_axis_y = 0; fCdelete++;
1892  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
1893  }
1894  } // end of if ( OKData == kTRUE )
1895  else
1896  {
1897  fStatusDataExist = kFALSE;
1898  }
1899  } // end of if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins) ) ||
1900  //( (BetweenWhat == fBetweenSamples) && (i0StinEcha>= 0) && (i0StinEcha<fEcal->MaxCrysInStin())) ||
1901  //( (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
1902  // /* && (i0Sample >= 0) && (i0Sample < fFapNbOfSamples ) */ ) )
1903  else
1904  {
1905  if(BetweenWhat == fBetweenSamples)
1906  {
1907  cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* ==> Wrong channel number in "
1908  << fFapStinName.Data() << ". Value = "
1909  << i0StinEcha << " (required range: [0, "
1910  << fEcal->MaxCrysInStin()-1 << "] )"
1911  << fTTBELL << endl;
1912  }
1913 
1914  // if( BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels )
1915  // {
1916  // cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* ==> Wrong sample index. Value = "
1917  // << i0Sample << " (required range: [0, "
1918  // << fFapNbOfSamples-1 << "] )"
1919  // << fTTBELL << endl;
1920  //}
1921  }
1922  }
1923  else // else of the if ( Stin_X_ok ==1 && Stin_Y_ok ==1 )
1924  {
1925  //---------------------------------------------------------- (ViewMatrix)
1926  if ( Stin_X_ok != 1 )
1927  {
1928  if( fFlagSubDet == "EB")
1929  {
1930  cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1931  << fFapStinName.Data() << " "
1932  << StexStin_A << ", "
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  cout << vStin(i) << ", ";
1939  }
1940  }
1941  }
1942 
1943  if( fFlagSubDet == "EE")
1944  {
1945  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  {
1953  cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";
1954  }
1955  }
1956  }
1957  cout << fTTBELL << endl;
1958  }
1959  if ( Stin_Y_ok != 1 )
1960  {
1961 
1962  if( fFlagSubDet == "EB")
1963  {
1964  cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1965  << fFapStinName.Data() << " "
1966  << StexStin_B << ", "
1967  << fFapStinName.Data() << " not found. Available numbers = ";
1968  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1969  {
1970  if( vStin(i) > 0 )
1971  {
1972  cout << vStin(i) << ", ";
1973  }
1974  }
1975  }
1976 
1977  if( fFlagSubDet == "EE")
1978  {
1979  cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1980  << fFapStinName.Data() << " "
1982  << fFapStinName.Data() << " not found. Available numbers = ";
1983  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
1984  {
1985  if( vStin(i) > 0 )
1986  {
1987  cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";
1988  }
1989  }
1990  }
1991  cout << fTTBELL << endl;
1992  }
1993  }
1994  } // end of if ( fMyRootFile->DataExist() == kTRUE )
1995  else
1996  {
1997  fStatusDataExist = kFALSE;
1998  cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
1999  << " Histo not available." << fTTBELL << endl;
2000  fFlagUserHistoMin = "OFF";
2001  fFlagUserHistoMax = "OFF";
2002  }
2003  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
2004  else
2005  {
2006  fStatusFileFound = kFALSE;
2007  cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
2008  << " ROOT file not found" << fTTBELL << endl;
2009  }
2010  } // ---- end of if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) ) -----
2011  else
2012  {
2013  cout << "!TEcnaHistos::ViewMatrix(...)> " << fFapStexName.Data()
2014  << " = " << fFapStexNumber << ". Out of range (range = [1,"
2015  << fEcal->MaxStexInStas() << "]) " << fTTBELL << endl;
2016  }
2017 } // end of ViewMatrix(...)
2018 
2019 //==========================================================================
2020 //
2021 // ViewStin ( => option COLZ )
2022 //
2023 //==========================================================================
2024 
2025 void TEcnaHistos::CorrelationsBetweenSamples(const Int_t& StinNumber)
2026 {
2027  TString CorOrCov = fCorrelationMatrix;
2028  ViewStin(StinNumber, CorOrCov);
2029 }
2030 
2031 void TEcnaHistos::CovariancesBetweenSamples(const Int_t& StinNumber)
2032 {
2033  TString CorOrCov = fCovarianceMatrix;
2034  ViewStin(StinNumber, CorOrCov);
2035 }
2036 
2037 //==========================================================================
2038 //
2039 // ViewStin ( => option COLZ )
2040 //
2041 // StexStin ==>
2042 // (sample,sample) cor or cov matrices for all the crystal of StexStin
2043 //
2044 //
2045 //==========================================================================
2046 void TEcnaHistos::ViewStin(const Int_t& cStexStin, const TString& CorOrCov)
2047 {
2048  //cor(s,s') or cov(s,s') matrices for all the crystals of one given Stin. Option COLZ mandatory.
2049 
2050  // cStexStin = number for cons (in case of EE)
2051  // StexStin = ECNA number
2052 
2053  if( (fFapStexNumber > 0) && fFapStexNumber <= fEcal->MaxStexInStas() )
2054  {
2055  Int_t StexStin = cStexStin;
2056  if(fFlagSubDet == "EE" )
2057  {StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, cStexStin);}
2058 
2064 
2065  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewStin)
2066  {
2067  fStatusFileFound = kTRUE;
2068 
2070  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
2071  // cout << "*TEcnaHistos::ViewStin(...)> Data are analyzed from file ----> "
2072  // << fp_name_short << endl;
2073 
2074  TVectorD vStin(fEcal->MaxStinEcnaInStex());
2075  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){vStin(i)=(Double_t)0.;}
2077 
2078  if ( fMyRootFile->DataExist() == kTRUE )
2079  {
2080  fStatusDataExist = kTRUE;
2081 
2082  Int_t Stin_ok = 0;
2083  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
2084  {
2085  if ( vStin(index_Stin) == StexStin ){Stin_ok++;}
2086  }
2087 
2088  if( Stin_ok == 1)
2089  {
2093 
2094  //......................... matrix title (ViewStin)
2095  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
2096 
2097  if ( CorOrCov == fCovarianceMatrix )
2098  {sprintf(f_in_mat_tit, "Xtal's Cov(s,s') matrices in %s.",
2099  fFapStinName.Data());}
2100  if ( CorOrCov == fCorrelationMatrix )
2101  {sprintf(f_in_mat_tit, "Xtal's Cor(s,s') matrices in %s.",
2102  fFapStinName.Data());}
2103 
2104  //................................. Bidim parameters
2105  Int_t GeoBidSize = fEcal->MaxSampADC()*fEcal->MaxCrysHocoInStin();
2106  Int_t nb_binx = GeoBidSize;
2107  Int_t nb_biny = GeoBidSize;
2108  Axis_t xinf_bid = (Axis_t)0.;
2109  Axis_t xsup_bid = (Axis_t)GeoBidSize;
2110  Axis_t yinf_bid = (Axis_t)0.;
2111  Axis_t ysup_bid = (Axis_t)GeoBidSize;
2112 
2113  //--------------------------------------------------------- (ViewStin)
2114  //............. matrices reading and histogram filling
2115 
2116  TH2D* h_geo_bid = new TH2D("geobidim_ViewStin", f_in_mat_tit,
2117  nb_binx, xinf_bid, xsup_bid,
2118  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
2119 
2120  h_geo_bid->Reset();
2121 
2122  //======================================================== (ViewStin)
2123 
2124  //----------------------------------------------- Geographical bidim filling
2125  Int_t ReadMatSize = fFapNbOfSamples;
2126  Int_t MatSize = fEcal->MaxSampADC();
2127  TMatrixD read_matrix(ReadMatSize, ReadMatSize);
2128  for(Int_t i=0; i-ReadMatSize < 0; i++){for(Int_t j=0; j-ReadMatSize < 0; j++)
2129  {read_matrix(i,j)=(Double_t)0.;}}
2130 
2131  Int_t i_data_exist = 0;
2132 
2133  for(Int_t n_crys = 0; n_crys < fEcal->MaxCrysInStin(); n_crys++)
2134  {
2135  if( CorOrCov == fCovarianceMatrix )
2136  {read_matrix = fMyRootFile->ReadCovariancesBetweenSamples(StexStin, n_crys, ReadMatSize);}
2137  if ( CorOrCov == fCorrelationMatrix )
2138  {read_matrix = fMyRootFile->ReadCorrelationsBetweenSamples(StexStin, n_crys, ReadMatSize);}
2139 
2140  if( fMyRootFile->DataExist() == kFALSE )
2141  {
2142  fStatusDataExist = kFALSE;
2143  break; // <= if no data: exiting loop over the channels
2144  }
2145  else
2146  {
2147  fStatusDataExist = kTRUE;
2148  i_data_exist++;
2149 
2150  for(Int_t i_samp = 0 ; i_samp < ReadMatSize ; i_samp++)
2151  {
2152  Int_t i_xgeo = GetXSampInStin(fFapStexNumber, StexStin, n_crys, i_samp);
2153  for(Int_t j_samp = 0; j_samp < ReadMatSize ; j_samp++)
2154  {
2155  Int_t j_ygeo = GetYSampInStin(fFapStexNumber,
2156  StexStin, n_crys, j_samp);
2157  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)j_ygeo,
2158  (Double_t)read_matrix(i_samp, j_samp));
2159  }
2160  }
2161  }
2162  }
2163 
2164  //=========== H I S T O M I N / M A X M A N A G E M E N T ======== (ViewStin)
2165  //................................ Put histo min max values
2166  TString quantity_code = "D_MCs_ChNb";
2167  if( CorOrCov == fCorrelationMatrix ){quantity_code = "D_MCs_ChNb";}
2168  if( CorOrCov == fCovarianceMatrix ){quantity_code = "H2HFccMosMatrix";}
2169 
2170  //.......... default if flag not set to "ON"
2171  SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
2172  SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
2173 
2174  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
2175  //.......... user's min and/or max values
2176  if( fFlagUserHistoMin == "ON" )
2177  {SetYminMemoFromValue(quantity_code, fUserHistoMin); fFlagUserHistoMin = "OFF";}
2178  if( fFlagUserHistoMax == "ON" )
2179  {SetYmaxMemoFromValue(quantity_code, fUserHistoMax); fFlagUserHistoMax = "OFF";}
2180  //................................. automatic min and/or max
2181  if( fFlagUserHistoMin == "AUTO" )
2182  {SetYminMemoFromValue(quantity_code, h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
2183  if( fFlagUserHistoMax == "AUTO" )
2184  {SetYmaxMemoFromValue(quantity_code, h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
2185  //...................................... histo set ymin and ymax (ViewStin)
2186  if ( CorOrCov == fCorrelationMatrix )
2187  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_MCs_ChNb");
2188 
2189  // ************************** A GARDER EN RESERVE *******************************
2190  //............. special contour level for correlations (square root wise scale)
2191  //Int_t nb_niv = 9;
2192  //Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
2193  //SqrtContourLevels(nb_niv, &cont_niv[0]);
2194  //h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
2195  //delete [] cont_niv; fCdelete++;
2196  // ******************************** (FIN RESERVE) *******************************
2197  }
2198  if ( CorOrCov == fCovarianceMatrix )
2199  {SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_TNo_ChNb");}
2200 
2201  // =================================== P L O T S ======================== (ViewStin)
2202  if( i_data_exist > 0 )
2203  {
2204  char* f_in = new char[fgMaxCar]; fCnew++;
2205 
2206  //...................... Taille/format canvas
2207  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2208  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2209 
2210  //.................................................. paves commentaires (ViewStin)
2211  SetAllPavesViewStin(StexStin);
2212 
2213  //------------------------------------ Canvas name ----------------- (ViewStin)
2214  TString name_cov_cor;
2215  Int_t MaxCar = fgMaxCar;
2216  name_cov_cor.Resize(MaxCar);
2217  name_cov_cor = "?";
2218  if( CorOrCov == fCovarianceMatrix ){name_cov_cor = "CovSS_Matrices_in_";}
2219  if( CorOrCov == fCorrelationMatrix){name_cov_cor = "CorSS_Matrices_in_";}
2220 
2221  TString name_visu;
2222  MaxCar = fgMaxCar;
2223  name_visu.Resize(MaxCar);
2224  name_visu = "colz";
2225 
2226  sprintf(f_in, "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s%d_%s",
2227  name_cov_cor.Data(), fFapStinName.Data(),
2230  fFapStexName.Data(), fFapStexNumber,
2231  fFapStinName.Data(), StexStin, name_visu.Data());
2232 
2233  SetHistoPresentation((TH1D*)h_geo_bid, "Stin");
2234 
2235  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
2236  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2237 
2238  // cout << "*TEcnaHistos::ViewStin(...)> Plot is displayed on canvas ----> " << f_in << endl;
2239 
2240  delete [] f_in; f_in = 0; fCdelete++;
2241 
2242  //------------------------ Canvas draw and update ------------ (ViewStin)
2243  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
2244  fPavComStex->Draw();
2245  fPavComStin->Draw();
2246  fPavComAnaRun->Draw();
2247  fPavComNbOfEvts->Draw();
2248 
2249  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2250  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2251  MainCanvas->Divide(1, 1, x_margin, y_margin);
2252  gPad->cd(1);
2253 
2254  Int_t logy = 0;
2255  gPad->SetLogy(logy);
2256 
2257  h_geo_bid->DrawCopy("COLZ");
2258 
2259  //--------------------------------------------------------------------------- (ViewStin)
2260  Int_t size_Hoco = fEcal->MaxCrysHocoInStin();
2261  Int_t size_Veco = fEcal->MaxCrysVecoInStin();
2262 
2263  ViewStinGrid(fFapStexNumber, StexStin, MatSize, size_Hoco, size_Veco, " ");
2264 
2265  gPad->Update();
2266 
2267  h_geo_bid->SetStats((Bool_t)1);
2268 
2269  // delete MainCanvas; fCdeleteRoot++;
2270  }
2271  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
2272 
2273  h_geo_bid->Delete(); h_geo_bid = 0; fCdeleteRoot++;
2274  }
2275  else
2276  {
2277  cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> "
2278  << fFapStinName.Data() << " "
2279  << cStexStin << " not found."
2280  << " Available numbers = ";
2281  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
2282  {
2283  if( vStin(i) > 0 )
2284  {
2285  if( fFlagSubDet == "EB" ){cout << (Int_t)vStin(i) << ", ";}
2286  if( fFlagSubDet == "EE" )
2287  {cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";}
2288  }
2289  }
2290  cout << fTTBELL << endl;
2291  }
2292  } // end of if ( myRootFile->DataExist() == kTRUE )
2293  else
2294  {
2295  fStatusDataExist = kFALSE;
2296  }
2297  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
2298  else
2299  {
2300  fStatusFileFound = kFALSE;
2301 
2302  cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> "
2303  << " ROOT file not found" << fTTBELL << endl;
2304  }
2305  }
2306  else
2307  {
2308  cout << "!TEcnaHistos::ViewStin(...)> " << fFapStexName.Data()
2309  << " = " << fFapStexNumber << ". Out of range (range = [1,"
2310  << fEcal->MaxStexInStas() << "]) " << fTTBELL << endl;
2311  }
2312 } // end of ViewStin(...)
2313 
2314 //====================================================================================
2315 //
2316 // StinCrystalNumbering
2317 // independent of the ROOT file => StexNumber as argument
2318 //
2319 //====================================================================================
2320 void TEcnaHistos::StinCrystalNumbering(const Int_t& StexNumber, const Int_t& cStexStin)
2321 {
2322 //display the crystal numbering of one Stin
2323 // cStexStin = Tower number in case of EB or SC number for construction in case of EE
2324 
2325  if( fFlagSubDet == "EB" ){TowerCrystalNumbering(StexNumber, cStexStin);}
2326  if( fFlagSubDet == "EE" ){SCCrystalNumbering(StexNumber, cStexStin);}
2327 }
2328 //----------------> end of StinCrystalNumbering()
2329 
2330 //====================================================================================
2331 //
2332 // TowerCrystalNumbering
2333 // independent of the ROOT file => SMNumber as argument
2334 //
2335 //====================================================================================
2336 void TEcnaHistos::TowerCrystalNumbering(const Int_t& SMNumber, const Int_t& n1SMTow)
2337 {
2338  //display the crystal numbering of one tower
2339 
2340  if( (SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB()) )
2341  {
2343 
2344  Int_t MatSize = fEcal->MaxSampADC();
2345  Int_t size_eta = fEcal->MaxCrysEtaInTow();
2346  Int_t size_phi = fEcal->MaxCrysPhiInTow();
2347 
2348  //---------------------------------- bidim
2349 
2350  Int_t nb_bins = fEcal->MaxSampADC();
2351  Int_t nx_gbins = nb_bins*size_eta;
2352  Int_t ny_gbins = nb_bins*size_phi;
2353 
2354  Axis_t xinf_gbid = (Axis_t)0.;
2355  Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC()*size_eta;
2356  Axis_t yinf_gbid = (Axis_t)0.;
2357  Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC()*size_phi;
2358 
2359  TString fg_name = "M0' crystals";
2360  TString fg_tit = "Xtal numbering (chan. in tow, chan. in SM, Xtal in SM, hashed)";
2361 
2362  //----------------------- empty 2D histo for pave coordinates registration
2363  TH2D *h_gbid;
2364  h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(),
2365  nx_gbins, xinf_gbid, xsup_gbid,
2366  ny_gbins, yinf_gbid, ysup_gbid); fCnewRoot++;
2367  h_gbid->Reset();
2368 
2369  //----------------- T R A C E D E S P L O T S ------ (TowerCrystalNumbering)
2370 
2371  char* f_in = new char[fgMaxCar]; fCnew++;
2372 
2373  //...................... Taille/format canvas
2374 
2375  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2376  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2377 
2378  //........................................ couleurs
2379  Color_t couleur_noir = fCnaParHistos->SetColorsForNumbers("crystal");
2380  Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
2381  Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
2382 
2383  gStyle->SetPalette(1,0); // Rainbow spectrum
2384 
2385  //.................................... options generales
2387 
2388  //.................................... paves commentaires (TowerCrystalNumbering)
2389 
2390  SetAllPavesViewStinCrysNb(SMNumber, n1SMTow);
2391 
2392  //---------------------------------------------- (TowerCrystalNumbering)
2393 
2394  //..................... Canvas name
2395  sprintf(f_in, "Crystal_Numbering_for_%s_X_%d_%s%d",
2396  fFapStinName.Data(), n1SMTow, fFapStexName.Data(), SMNumber);
2397 
2398  SetHistoPresentation((TH1D*)h_gbid, "Stin");
2399 
2400  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
2401  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2402 
2403  // cout << "*TEcnaHistosEB::TowerCrystalNumbering(...)> Plot is displayed on canvas ----> "
2404  // << f_in << endl;
2405 
2406  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2407  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2408  MainCanvas->Divide(1, 1, x_margin, y_margin);
2409 
2410  fPavComStex->Draw();
2411  fPavComStin->Draw();
2412  fPavComLVRB->Draw();
2413 
2414  Bool_t b_true = 1;
2415  Bool_t b_false = 0;
2416  gPad->cd(1);
2417 
2418  gStyle->SetMarkerColor(couleur_rouge);
2419 
2420  Int_t logy = 0;
2421  gPad->SetLogy(logy);
2422 
2423  //............................... bidim .......... (TowerCrystalNumbering)
2424 
2425  h_gbid->SetStats(b_false);
2426  h_gbid->DrawCopy("COLZ");
2427 
2428  //..... Ecriture des numeros de channels dans la grille..... (TowerCrystalNumbering)
2429  // et des numeros SM des cristaux
2430 
2431  //............... prepa arguments fixes appels [TText]->DrawText()
2432  char* f_in_elec = new char[fgMaxCar]; fCnew++;
2433  TString TowerLvrbType = fEcalNumbering->GetTowerLvrbType(n1SMTow) ;
2434  TText *text_elec_num = new TText(); fCnewRoot++;
2435  if ( TowerLvrbType == "top" ){text_elec_num->SetTextColor(couleur_rouge);}
2436  if ( TowerLvrbType == "bottom" ){text_elec_num->SetTextColor(couleur_bleu_fonce);}
2437  text_elec_num->SetTextSize(0.04);
2438 
2439  char* f_in_sme = new char[fgMaxCar]; fCnew++;
2440  TText *text_sme_num = new TText(); fCnewRoot++;
2441  if ( TowerLvrbType == "top" ){text_sme_num->SetTextColor(couleur_rouge);}
2442  if ( TowerLvrbType == "bottom" ){text_sme_num->SetTextColor(couleur_bleu_fonce);}
2443  text_sme_num->SetTextSize(0.03);
2444 
2445  char* f_in_sm = new char[fgMaxCar]; fCnew++;
2446  TText *text_sm_num = new TText(); fCnewRoot++;
2447  text_sm_num->SetTextColor(couleur_noir);
2448  text_sm_num->SetTextSize(0.03);
2449 
2450  char* f_in_hsd = new char[fgMaxCar]; fCnew++;
2451  TText *text_hsd_num = new TText(); fCnewRoot++;
2452  text_hsd_num->SetTextColor(couleur_noir);
2453  text_hsd_num->SetTextSize(0.03);
2454 
2455  //............... prepa arguments fixes appels GetXGeo(...) et GetYGeo(...)
2456  Int_t i_samp = 0;
2457  //Double_t off_set = (Double_t)(fEcal->MaxSampADC()/4);
2458  Double_t off_set = (Double_t)1.;
2459 
2460  //------------------ LOOP ON THE CRYSTAL ELECTRONIC CHANNEL NUMBER (TowerCrystalNumbering)
2461 
2462  for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInTow(); i_chan++)
2463  {
2464  Int_t i_xgeo = GetXSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2465  Int_t i_ygeo = GetYSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2466 
2467  Double_t xgi = i_xgeo + 3.*off_set;
2468  Double_t ygj = i_ygeo + 7.*off_set;
2469 
2470  Double_t xgi_sme = i_xgeo + 3.*off_set;
2471  Double_t ygj_sme = i_ygeo + 5.*off_set;
2472 
2473  Double_t xgi_sm = i_xgeo + 3.*off_set;
2474  Double_t ygj_sm = i_ygeo + 3.*off_set;
2475 
2476  Double_t xgi_hsd = i_xgeo + 3.*off_set;
2477  Double_t ygj_hsd = i_ygeo + 1.*off_set;
2478 
2479  Int_t i_crys_sme = fEcalNumbering->Get0SMEchaFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2480  Int_t i_crys_sm = fEcalNumbering->Get1SMCrysFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2481 
2482  Double_t Eta = fEcalNumbering->GetEta(SMNumber, n1SMTow, i_chan);
2483  Double_t Phi = fEcalNumbering->GetPhi(SMNumber, n1SMTow, i_chan);
2484 
2485  Int_t i_crys_hsd = fEcalNumbering->GetHashedNumberFromIEtaAndIPhi((Int_t)Eta, (Int_t)Phi);
2486 
2487  //------------------------------------------------------- TowerCrystalNumbering
2488 
2489  sprintf(f_in_elec, "%d", i_chan);
2490  text_elec_num->DrawText(xgi, ygj, f_in_elec);
2491 
2492  sprintf(f_in_sme, "%d", i_crys_sme);
2493  text_sme_num->DrawText(xgi_sme, ygj_sme, f_in_sme);
2494 
2495  sprintf(f_in_sm, "%d", i_crys_sm);
2496  text_sm_num->DrawText(xgi_sm, ygj_sm, f_in_sm);
2497 
2498  sprintf(f_in_hsd, "%d", i_crys_hsd);
2499  text_sm_num->DrawText(xgi_hsd, ygj_hsd, f_in_hsd);
2500  }
2501  text_sm_num->Delete(); text_sm_num = 0; fCdeleteRoot++;
2502  text_sme_num->Delete(); text_sme_num = 0; fCdeleteRoot++;
2503  text_elec_num->Delete(); text_elec_num = 0; fCdeleteRoot++;
2504  text_hsd_num->Delete(); text_hsd_num = 0; fCdeleteRoot++;
2505 
2506  ViewStinGrid(SMNumber, n1SMTow, MatSize, size_eta, size_phi, "CrystalNumbering");
2507 
2508  gPad->Update();
2509  h_gbid->SetStats(b_true);
2510 
2511  h_gbid->Delete(); h_gbid = 0; fCdeleteRoot++;
2512 
2513  delete [] f_in; f_in = 0; fCdelete++;
2514  delete [] f_in_sm; f_in_sm = 0; fCdelete++;
2515  delete [] f_in_sme; f_in_sme = 0; fCdelete++;
2516  delete [] f_in_elec; f_in_elec = 0; fCdelete++;
2517  }
2518  else
2519  {
2520  cout << "!TEcnaHistos::TowerCrystalNumbering(...)> SM = " << SMNumber
2521  << ". Out of range ( range = [1," << fEcal->MaxSMInEB() << "] )" << fTTBELL << endl;
2522  }
2523 }
2524 //----------------> end of TowerCrystalNumbering()
2525 
2526 //====================================================================================
2527 //
2528 // SCCrystalNumbering
2529 // independent of the ROOT file => DeeNumber and n1DeeSCEcna as argument
2530 //
2531 //====================================================================================
2532 void TEcnaHistos::SCCrystalNumbering(const Int_t& DeeNumber, const Int_t& n1DeeSCCons)
2533 {
2534  //display the crystal numbering of one SC
2535 
2536  if( (DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE()) )
2537  {
2538  Int_t n1DeeSCEcna = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(DeeNumber, n1DeeSCCons);
2541 
2542  //Int_t MatSize = fEcal->MaxSampADC();
2543  Int_t size_IX = fEcal->MaxCrysIXInSC();
2544  Int_t size_IY = fEcal->MaxCrysIYInSC();
2545 
2546  //---------------------------------- bidim
2547 
2548  Int_t nb_bins = fEcal->MaxSampADC();
2549  Int_t nx_gbins = nb_bins*size_IX;
2550  Int_t ny_gbins = nb_bins*size_IY;
2551 
2552  Axis_t xinf_gbid = (Axis_t)0.;
2553  Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC()*size_IX;
2554  Axis_t yinf_gbid = (Axis_t)0.;
2555  Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC()*size_IY;
2556 
2557  TString fg_name = "crystalnbring";
2558  TString fg_tit = "Xtal numbering for construction";
2559 
2560  TH2D *h_gbid;
2561  h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(),
2562  nx_gbins, xinf_gbid, xsup_gbid,
2563  ny_gbins, yinf_gbid, ysup_gbid); fCnewRoot++;
2564  h_gbid->Reset();
2565 
2566  //----------------- T R A C E D E S P L O T S ------ (SCCrystalNumbering)
2567 
2568  char* f_in = new char[fgMaxCar]; fCnew++;
2569 
2570  //...................... Taille/format canvas
2571 
2572  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2573  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2574  //........................................ couleurs
2575  // Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
2576  Color_t couleur_rouge = fCnaParHistos->ColorDefinition("rouge");
2577  // Color_t couleur_bleu_fonce = fCnaParHistos->ColorDefinition("bleu_fonce");
2578 
2579  gStyle->SetPalette(1,0); // Rainbow spectrum
2580  //.................................... options generales
2582 
2583  //.................................... paves commentaires (SCCrystalNumbering)
2584  SetAllPavesViewStinCrysNb(DeeNumber, n1DeeSCEcna);
2585 
2586  //---------------------------------------------- (SCCrystalNumbering)
2587  //..................... Canvas name
2588  sprintf(f_in, "Crystal_Numbering_for_%s_X_%d_%s%d",
2589  fFapStinName.Data(), n1DeeSCEcna, fFapStexName.Data(), DeeNumber);
2590 
2591  SetHistoPresentation((TH1D*)h_gbid, "Stin");
2592 
2593  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w , canv_h); fCnewRoot++;
2594  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
2595 
2596  // cout << "*TEcnaHistosEE::SCCrystalNumbering(...)> Plot is displayed on canvas ----> "
2597  // << f_in << endl;
2598 
2599  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2600  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2601 
2602  MainCanvas->Divide(1, 1, x_margin, y_margin);
2603 
2604  fPavComStex->Draw();
2605  fPavComStin->Draw();
2606  fPavComCxyz->Draw();
2607 
2608  Bool_t b_true = 1;
2609  Bool_t b_false = 0;
2610  gPad->cd(1);
2611 
2612  gStyle->SetMarkerColor(couleur_rouge);
2613 
2614  Int_t logy = 0;
2615  gPad->SetLogy(logy);
2616 
2617  //............................... bidim .......... (SCCrystalNumbering)
2618  h_gbid->SetStats(b_false);
2619  fCnaParHistos->SetViewHistoOffsets((TH1D*)h_gbid, "Stin", " ");
2620  h_gbid->DrawCopy("COLZ");
2621 
2622  //..... Ecriture des numeros de channels dans la grille..... (SCCrystalNumbering)
2623  // et des numeros Dee des cristaux
2624  TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
2625  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
2626  TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
2627  Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
2628  //............... prepa arguments fixes appels [TText]->DrawText()
2629  char* f_in_elec = new char[fgMaxCar]; fCnew++;
2630  TText *text_elec_num = new TText(); fCnewRoot++;
2631  text_elec_num->SetTextColor(couleur_SC);
2632  text_elec_num->SetTextSize(0.06);
2633 
2634  //............... prepa arguments fixes appels GetXGeo(...) et GetYGeo(...)
2635  Int_t i_samp = 0;
2636  Double_t off_set = (Double_t)(fEcal->MaxSampADC()/3);
2637 
2638  //------------------ LOOP ON THE CRYSTAL ELECTRONIC CHANNEL NUMBER (SCCrystalNumbering)
2639 
2640  for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInSC(); i_chan++)
2641  {
2642  Int_t i_xgeo = GetXSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2643  Int_t i_ygeo = GetYSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2644 
2645  Double_t xgi = i_xgeo + off_set;
2646  Double_t ygj = i_ygeo + 2*off_set;
2647 
2648  //------------------------------------------------------- SCCrystalNumbering
2649  Int_t i_chan_p = i_chan+1;
2650  sprintf(f_in_elec, "%d", i_chan_p); // offset = +1 (Xtal for construction numbering, CMS NOTE 2006/027)
2651  text_elec_num->DrawText(xgi, ygj, f_in_elec);
2652  }
2653  text_elec_num->Delete(); text_elec_num = 0; fCdeleteRoot++;
2654 
2655  ViewStinGrid(DeeNumber, n1DeeSCEcna, fEcal->MaxSampADC(), size_IX, size_IY, "CrystalNumbering");
2656 
2657  gPad->Update();
2658  h_gbid->SetStats(b_true);
2659 
2660  h_gbid->Delete(); h_gbid = 0; fCdeleteRoot++;
2661 
2662  delete [] f_in; f_in = 0; fCdelete++;
2663  delete [] f_in_elec; f_in_elec = 0; fCdelete++;
2664  }
2665  else
2666  {
2667  cout << "!TEcnaHistos::SCCrystalNumbering(...)> Dee = " << DeeNumber
2668  << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )" << fTTBELL << endl;
2669  }
2670 }
2671 //----------------> end of SCCrystalNumbering()
2672 
2673 //==================================================================================
2674 //
2675 // GetXSampInStin, GetYSampInStin
2676 //
2677 //==================================================================================
2678 Int_t TEcnaHistos::GetXSampInStin(const Int_t& StexNumber, const Int_t& StexStin,
2679  const Int_t& i0StinEcha, const Int_t& i_samp)
2680 {
2681 //Gives the X coordinate in the geographic view of one Stin
2682 
2683  Int_t ix_geo = -1;
2684 
2685  if( fFlagSubDet == "EB" )
2686  {TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2687  TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2688  if( (btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top") )
2689  {ix_geo = ( (fEcal->MaxCrysHocoInStin()-1)-(i0StinEcha/fEcal->MaxCrysHocoInStin()) )
2690  *fEcal->MaxSampADC() + i_samp;}
2691  if( (btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom") )
2692  {ix_geo = ( i0StinEcha/fEcal->MaxCrysHocoInStin() )*fEcal->MaxSampADC() + i_samp;}}
2693 
2694  if( fFlagSubDet == "EE" )
2695  { TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
2696  if( DeeDir == "right" )
2697  {ix_geo = (fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha)-1)*fEcal->MaxSampADC() + i_samp;}
2698  if( DeeDir == "left" )
2699  {ix_geo = (fEcal->MaxCrysHocoInStin() - fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha))*
2700  fEcal->MaxSampADC() + i_samp;}}
2701 
2702  return ix_geo;
2703 }
2704 //--------------------------------------------------------------------------------------------
2705 Int_t TEcnaHistos::GetYSampInStin(const Int_t& StexNumber, const Int_t& StexStin,
2706  const Int_t& i0StinEcha, const Int_t& j_samp)
2707 {
2708 //Gives the Y coordinate in the geographic view of one Stin
2709 
2710  Int_t jy_geo = -1;
2711 
2712  if( fFlagSubDet == "EB" )
2713  {
2714  TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2715  TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2716 
2717  //.......................... jy_geo for the EB+ (and beginning for the EB-)
2718 
2719  if( (btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom") )
2720  {
2721  if( i0StinEcha >= 0 && i0StinEcha <= 4 ) {jy_geo = (i0StinEcha - 0)*fEcal->MaxSampADC() + j_samp;}
2722  if( i0StinEcha >= 5 && i0StinEcha <= 9 ) {jy_geo = -(i0StinEcha - 9)*fEcal->MaxSampADC() + j_samp;}
2723  if( i0StinEcha >= 10 && i0StinEcha <= 14 ) {jy_geo = (i0StinEcha - 10)*fEcal->MaxSampADC() + j_samp;}
2724  if( i0StinEcha >= 15 && i0StinEcha <= 19 ) {jy_geo = -(i0StinEcha - 19)*fEcal->MaxSampADC() + j_samp;}
2725  if( i0StinEcha >= 20 && i0StinEcha <= 24 ) {jy_geo = (i0StinEcha - 20)*fEcal->MaxSampADC() + j_samp;}
2726  }
2727 
2728  if( (btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top") )
2729  {
2730  if( i0StinEcha >= 0 && i0StinEcha <= 4 )
2731  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha- 0))*fEcal->MaxSampADC() + j_samp;}
2732  if( i0StinEcha >= 5 && i0StinEcha <= 9 )
2733  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) + (i0StinEcha- 9))*fEcal->MaxSampADC() + j_samp;}
2734  if( i0StinEcha >= 10 && i0StinEcha <= 14 )
2735  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha-10))*fEcal->MaxSampADC() + j_samp;}
2736  if( i0StinEcha >= 15 && i0StinEcha <= 19 )
2737  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) + (i0StinEcha-19))*fEcal->MaxSampADC() + j_samp;}
2738  if( i0StinEcha >= 20 && i0StinEcha <= 24 )
2739  {jy_geo = ( (fEcal->MaxCrysVecoInStin()-1) - (i0StinEcha-20))*fEcal->MaxSampADC() + j_samp;}
2740  }
2741  }
2742 
2743  if( fFlagSubDet == "EE" )
2744  {jy_geo =
2745  (fEcalNumbering->GetJYCrysInSC(StexNumber, StexStin, i0StinEcha) - 1)*fEcal->MaxSampADC() + j_samp;}
2746 
2747  return jy_geo;
2748 }
2749 
2750 //===============================================================================
2751 //
2752 // ViewStinGrid
2753 // independent of the ROOT file => StexNumber as argument
2754 //
2755 //===============================================================================
2756 void TEcnaHistos::ViewStinGrid(const Int_t& StexNumber,
2757  const Int_t& StexStin, const Int_t& MatSize,
2758  const Int_t& size_Hoco, const Int_t& size_Veco,
2759  const TString& chopt)
2760 {
2761  //Grid of one Stin with axis Hoco and Veco
2762 
2763  if( fFlagSubDet == "EB"){ViewTowerGrid(StexNumber, StexStin, MatSize,
2764  size_Hoco, size_Veco, chopt);}
2765  if( fFlagSubDet == "EE"){ViewSCGrid(StexNumber, StexStin, MatSize,
2766  size_Hoco, size_Veco, chopt);}
2767 
2768 } // end of ViewStinGrid
2769 
2770 //===============================================================================
2771 //
2772 // ViewTowerGrid
2773 // independent of the ROOT file => SMNumber as argument
2774 //
2775 //===============================================================================
2776 void TEcnaHistos::ViewTowerGrid(const Int_t& SMNumber,
2777  const Int_t& n1SMTow, const Int_t& MatSize,
2778  const Int_t& size_eta, const Int_t& size_phi,
2779  const TString& chopt)
2780 {
2781  //Grid of one tower with axis eta and phi
2782  //.......................... lignes verticales
2783  Double_t xline = 0.;
2784 
2785  Double_t yline_bot = 0.;
2786  Double_t yline_top = (Double_t)(MatSize*size_eta);
2787 
2788  for( Int_t i = 0 ; i < size_eta ; i++)
2789  {
2790  xline = xline + (Double_t)MatSize;
2791  TLine *lin;
2792  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
2793  lin->Draw();
2794  // delete lin; fCdeleteRoot++;
2795  }
2796  //............................. lignes horizontales
2797  Double_t xline_left = 0;
2798  Double_t xline_right = (Double_t)(MatSize*size_eta);
2799 
2800  Double_t yline = -(Double_t)MatSize;
2801 
2802  for( Int_t j = 0 ; j < size_eta+1 ; j++)
2803  {
2804  yline = yline + (Double_t)MatSize;
2805  TLine *lin;
2806  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
2807  lin->Draw();
2808  // delete lin; fCdeleteRoot++;
2809  }
2810 
2811  //------------------ trace axes en eta et phi --------------- ViewTowerGrid
2812 
2813  //...................................................... Axe i(eta) (x bottom) (ViewTowerGrid)
2814 
2815  Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber, n1SMTow);
2816  Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber, n1SMTow);
2817 
2818  TString x_var_name = GetEtaPhiAxisTitle("ietaTow");
2819  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
2820 
2821  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
2822  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
2823  Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
2824  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("Towx");
2825  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("Towx");
2826 
2827  new TF1("f1", x_direction.Data(), eta_min, eta_max); fCnewRoot++;
2828 
2829  TGaxis* sup_axis_x = 0;
2830 
2831  if ( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
2832  {sup_axis_x = new TGaxis( -(Float_t)MatSize, (Float_t)0, (Float_t)(size_eta*MatSize), (Float_t)0.,
2833  "f1", size_eta, "BCS" , 0.); fCnewRoot++;
2834  cout << "TEcnaHistosEB::ViewTowerGrid()> non foreseen case. eta with -x direction." << fTTBELL << endl;}
2835 
2836  if ( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
2837  {sup_axis_x = new TGaxis( (Float_t)0. , (Float_t)0., (Float_t)(size_eta*MatSize), (Float_t)0.,
2838  "f1", size_eta, "CS" , 0.); fCnewRoot++;}
2839 
2840  sup_axis_x->SetTitle(x_var_name);
2841  sup_axis_x->SetTitleSize(tit_siz_x);
2842  sup_axis_x->SetTitleOffset(tit_off_x);
2843  sup_axis_x->SetLabelSize(lab_siz_x);
2844  sup_axis_x->SetLabelOffset(lab_off_x);
2845  sup_axis_x->SetTickSize(tic_siz_x);
2846  sup_axis_x->Draw("SAME");
2847 
2848  //...................................................... Axe phi (y right) (ViewTowerGrid)
2849  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
2850  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
2851  Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
2852  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Towy");
2853  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Towy");
2854 
2855  if( chopt == "CrystalNumbering" )
2856  {
2857  Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber, n1SMTow);
2858  Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber, n1SMTow);
2859 
2860  TString y_var_name = GetEtaPhiAxisTitle("phi");
2861  TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
2862 
2863  new TF1("f2", y_direction.Data(), phi_min, phi_max); fCnewRoot++;
2864  TGaxis* sup_axis_y = 0;
2865 
2866  if ( y_direction == "-x" ) // ALWAYS IN THIS CASE: ymin->ymax <=> top->bottom ("-x") direction
2867  {sup_axis_y = new TGaxis( (Float_t)(size_eta*MatSize), (Float_t)0.,
2868  (Float_t)(size_eta*MatSize), (Float_t)(size_phi*MatSize),
2869  "f2", size_phi, "+CS", 0.); fCnewRoot++;}
2870 
2871  if ( y_direction == "x" ) // NEVER IN THIS CASE: ymin->ymax <=> bottom->top ("x") direction
2872  {sup_axis_y = new TGaxis( (Float_t)0., (Float_t)0., (Float_t) 0., (Float_t)(size_phi*MatSize),
2873  "f2", size_phi, "BCS", 0.); fCnewRoot++;}
2874 
2875  sup_axis_y->SetTitle(y_var_name);
2876  sup_axis_y->SetTitleSize(tit_siz_y);
2877  sup_axis_y->SetTitleOffset(tit_off_y);
2878  sup_axis_y->SetLabelSize(lab_siz_y);
2879  sup_axis_y->SetLabelOffset(lab_off_y);
2880  sup_axis_y->SetTickSize(tic_siz_y);
2881  sup_axis_y->Draw("SAME");
2882  }
2883  //...................................................... Axe j(phi) (y left) (ViewTowerGrid)
2884 
2885  Double_t j_phi_min = fEcalNumbering->GetJPhiMin(SMNumber, n1SMTow);
2886  Double_t j_phi_max = fEcalNumbering->GetJPhiMax(SMNumber, n1SMTow);
2887 
2888  TString jy_var_name = GetEtaPhiAxisTitle("jphiTow");
2889  TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
2890 
2891  new TF1("f3", jy_direction.Data(), j_phi_min, j_phi_max); fCnewRoot++;
2892  TGaxis* sup_axis_jy = 0;
2893 
2894  sup_axis_jy = new TGaxis( (Float_t)0., (Float_t)0.,
2895  (Float_t)0., (Float_t)(size_phi*MatSize),
2896  "f3", size_phi, "SC", 0.); fCnewRoot++;
2897 
2898  sup_axis_jy->SetTitle(jy_var_name);
2899  sup_axis_jy->SetTitleSize(tit_siz_y);
2900  sup_axis_jy->SetTitleOffset(tit_off_y);
2901  sup_axis_jy->SetLabelSize(lab_siz_y);
2902  sup_axis_jy->SetLabelOffset(lab_off_y);
2903  sup_axis_jy->SetTickSize(tic_siz_y);
2904  sup_axis_jy->Draw("SAME");
2905 } // end of ViewTowerGrid
2906 
2907 //===============================================================================
2908 //
2909 // ViewSCGrid
2910 // independent of the ROOT file => DeeNumber as argument
2911 //
2912 //===============================================================================
2913 void TEcnaHistos::ViewSCGrid(const Int_t& DeeNumber, const Int_t& n1DeeSCEcna,
2914  const Int_t& MatSize, const Int_t& size_IX,
2915  const Int_t& size_IY, const TString& chopt)
2916 {
2917  //Grid of one SC with axis IX and IY
2918  //.......................... lignes verticales
2919  Double_t xline = 0.;
2920 
2921  Double_t yline_bot = 0.;
2922  Double_t yline_top = (Double_t)(MatSize*size_IX);
2923 
2924  for( Int_t i = 0 ; i < size_IX ; i++)
2925  {
2926  xline = xline + (Double_t)MatSize;
2927  TLine *lin;
2928  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
2929  lin->Draw();
2930  // delete lin; fCdeleteRoot++;
2931  }
2932  //............................. lignes horizontales
2933  Double_t xline_left = 0;
2934  Double_t xline_right = (Double_t)(MatSize*size_IX);
2935 
2936  Double_t yline = -(Double_t)MatSize;
2937 
2938  for( Int_t j = 0 ; j < size_IX+1 ; j++)
2939  {
2940  yline = yline + (Double_t)MatSize;
2941  TLine *lin;
2942  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
2943  lin->Draw();
2944  // delete lin; fCdeleteRoot++;
2945  }
2946 
2947  //------------------ trace axes en IX et IY --------------- ViewSCGrid
2948 
2949  //...................................................... Axe i(IX) (x bottom) (ViewSCGrid)
2950 
2951  Double_t IX_min = fEcalNumbering->GetIIXMin(n1DeeSCEcna) - 0.5;
2952  Double_t IX_max = fEcalNumbering->GetIIXMax(n1DeeSCEcna) + 0.5;
2953 
2954  Float_t axis_x_inf = 0;
2955  Float_t axis_x_sup = 0;
2956  Float_t axis_y_inf = 0;
2957  Float_t axis_y_sup = 0;
2958  Int_t axis_nb_div = 1;
2959  Double_t IX_values_min = 0;
2960  Double_t IX_values_max = 0;
2961  Option_t* axis_chopt = "CS";
2962 
2963  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
2964  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
2965  Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
2966  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SCx");
2967  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SCx");
2968 
2969  TString StrDee = "iIXSC";
2970  if( DeeNumber == 1 ){StrDee = "iIXDee1";}
2971  if( DeeNumber == 2 ){StrDee = "iIXDee2";}
2972  if( DeeNumber == 3 ){StrDee = "iIXDee3";}
2973  if( DeeNumber == 4 ){StrDee = "iIXDee4";}
2974 
2975  TString x_var_name = GetIXIYAxisTitle(StrDee.Data());
2976  TString x_direction = fEcalNumbering->GetXDirectionEE(DeeNumber);
2977 
2978  TGaxis* sup_axis_x = 0;
2979 
2980  if( DeeNumber == 1 ) // -xmin -> -xmax <=> left->right
2981  {
2982  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2983  axis_nb_div = size_IX;
2984  IX_values_min = -IX_min ; IX_values_max = -IX_max; axis_chopt = "CS";
2985  }
2986  if( DeeNumber == 2 ) // xmin -> xmax <=> right->left
2987  {
2988  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2989  axis_nb_div = size_IX;
2990  IX_values_min = IX_min ; IX_values_max = IX_max; axis_chopt = "CS";
2991  }
2992  if( DeeNumber == 3 ) // xmin -> xmax <=> left->right
2993  {
2994  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
2995  axis_nb_div = size_IX;
2996  IX_values_min = IX_min ; IX_values_max = IX_max; axis_chopt = "CS";
2997  }
2998  if( DeeNumber == 4 ) // -xmin -> -xmax <=> right->left
2999  {
3000  axis_x_inf = 0; axis_y_inf = 0; axis_x_sup = size_IX*MatSize; axis_y_sup = 0;
3001  axis_nb_div = size_IX;
3002  IX_values_min = -IX_min ; IX_values_max = -IX_max; axis_chopt = "CS";
3003  }
3004 
3005  new TF1("f1", x_direction.Data(), IX_values_min, IX_values_max); fCnewRoot++;
3006  sup_axis_x = new TGaxis( axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
3007  "f1", axis_nb_div, axis_chopt , 0.); fCnewRoot++;
3008 
3009  sup_axis_x->SetTitle(x_var_name);
3010  sup_axis_x->SetTitleSize(tit_siz_x);
3011  sup_axis_x->SetTitleOffset(tit_off_x);
3012  sup_axis_x->SetLabelSize(lab_siz_x);
3013  sup_axis_x->SetLabelOffset(lab_off_x);
3014  sup_axis_x->SetTickSize(tic_siz_x); // <===== NE MARCHE QU'AVEC L'OPTION "S"
3015  sup_axis_x->Draw("SAME");
3016 
3017  //...................................................... Axe j(IY) (ViewSCGrid)
3018 
3019  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
3020  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
3021  Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
3022  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SCy");
3023  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SCy");
3024 
3025  Double_t j_IY_min = fEcalNumbering->GetJIYMin(DeeNumber, n1DeeSCEcna) - 0.5;
3026  Double_t j_IY_max = fEcalNumbering->GetJIYMax(DeeNumber, n1DeeSCEcna) + 0.5;
3027 
3028  TString jy_var_name = GetIXIYAxisTitle("jIYSC");
3029  TString jy_direction = fEcalNumbering->GetJYDirectionEE(DeeNumber);
3030 
3031  new TF1("f2", jy_direction.Data(), j_IY_min, j_IY_max); fCnewRoot++;
3032 
3033  TGaxis* sup_axis_jy = new TGaxis( (Float_t)0., (Float_t)0.,
3034  (Float_t)0., (Float_t)(size_IY*MatSize),
3035  "f2", size_IY, "CS", 0.); fCnewRoot++;
3036 
3037  sup_axis_jy->SetTitle(jy_var_name);
3038  sup_axis_jy->SetTitleSize(tit_siz_y);
3039  sup_axis_jy->SetTitleOffset(tit_off_y);
3040  sup_axis_jy->SetLabelSize(lab_siz_y);
3041  sup_axis_jy->SetLabelOffset(lab_off_y);
3042  sup_axis_jy->SetTickSize(tic_siz_y); // <===== NE MARCHE QU'AVEC L'OPTION "S"
3043  sup_axis_jy->Draw();
3044 
3045 } // end of ViewSCGrid
3046 
3047 //=======================================================================================
3048 //
3049 // ViewStex(***)
3050 //
3051 // (Hoco,Veco) matrices for all the Stins of a Stex
3052 //
3053 // arg_read_histo: 1D array containing the quantity for each channel in the Stex
3054 // (dim = MaxCrysInStex())
3055 // arg_AlreadyRead: =1 <=> arg_read_histo
3056 // =0 <=> read the 1D array in this method with TEcnaRead
3057 //
3058 // HistoCode: code for the plotted quantity
3059 //
3060 //=======================================================================================
3061 void TEcnaHistos::ViewStex(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
3062  const TString& HistoCode)
3063 {
3064 // (Hoco, Veco) matrices for all the Stins of a Stex
3065 
3066  Bool_t OKFileExists = kFALSE;
3067  Bool_t OKData = kFALSE;
3068 
3069  Int_t n1StexStin = -1;
3070 
3071  if( arg_AlreadyRead == fTobeRead )
3072  {
3078 
3079  if( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;}
3080 
3081  if( OKFileExists == kTRUE )
3082  {
3084  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3085  // cout << "*TEcnaHistos::ViewStex(...)> Data are analyzed from file ----> "
3086  // << fp_name_short << endl;
3087 
3091  }
3092  }
3093  if( arg_AlreadyRead >= 1 )
3094  {
3095  OKFileExists = kTRUE;
3096  }
3097 
3098  if( OKFileExists == kTRUE )
3099  {
3100  fStatusFileFound = kTRUE;
3101 
3102  //......................... matrix title (ViewStex)
3103  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
3104  sprintf(f_in_mat_tit, "?");
3105 
3106  if (HistoCode == "D_NOE_ChNb") {sprintf(f_in_mat_tit, "Number of events");}
3107  if (HistoCode == "D_Ped_ChNb") {sprintf(f_in_mat_tit, "Pedestals");}
3108  if (HistoCode == "D_TNo_ChNb") {sprintf(f_in_mat_tit, "Total noise");}
3109  if (HistoCode == "D_MCs_ChNb") {sprintf(f_in_mat_tit, "Mean cor(s,s')");}
3110  if (HistoCode == "D_LFN_ChNb") {sprintf(f_in_mat_tit, "Low frequency noise");}
3111  if (HistoCode == "D_HFN_ChNb") {sprintf(f_in_mat_tit, "High frequency noise");}
3112  if (HistoCode == "D_SCs_ChNb") {sprintf(f_in_mat_tit, "Sigma of cor(s,s')");}
3113 
3114  //................................. Axis parameters
3115  Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex()*fEcal->MaxCrysHocoInStin();
3116  Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex()*fEcal->MaxCrysVecoInStin();
3117 
3118  Int_t nb_binx = GeoBidSizeHoco;
3119  Int_t nb_biny = GeoBidSizeVeco;
3120  Axis_t xinf_bid = (Axis_t)0.;
3121  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3122  Axis_t yinf_bid = (Axis_t)0.;
3123  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3124 
3125  TString axis_x_var_name = " #Hoco ";
3126  TString axis_y_var_name = " #Veco ";
3127 
3128  //............. matrices reading and histogram filling (ViewStex)
3129 
3130  TH2D* h_geo_bid = new TH2D("geobidim_ViewStex", f_in_mat_tit,
3131  nb_binx, xinf_bid, xsup_bid,
3132  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3133 
3134  h_geo_bid->Reset();
3135 
3136  //............................................... 1D histo reading (ViewStex)
3137  TVectorD partial_histp(fEcal->MaxCrysEcnaInStex());
3138  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++){partial_histp(i)=(Double_t)0.;}
3139 
3140  if( arg_AlreadyRead == fTobeRead )
3141  {
3142  if (HistoCode == "D_NOE_ChNb" ){partial_histp = fMyRootFile->ReadNumberOfEvents(fEcal->MaxCrysEcnaInStex());}
3143  if (HistoCode == "D_Ped_ChNb" ){
3144  partial_histp = fMyRootFile->ReadPedestals(fEcal->MaxCrysEcnaInStex());}
3145  if (HistoCode == "D_TNo_ChNb" ){
3146  partial_histp = fMyRootFile->ReadTotalNoise(fEcal->MaxCrysEcnaInStex());}
3147  if (HistoCode == "D_MCs_ChNb" ){
3149  if (HistoCode == "D_LFN_ChNb" ){
3151  if (HistoCode == "D_HFN_ChNb" ){
3153  if (HistoCode == "D_SCs_ChNb" ){
3155 
3156  OKData = fMyRootFile->DataExist();
3157  }
3158 
3159  if( arg_AlreadyRead >= 1 )
3160  {
3161  partial_histp = arg_read_histo;
3162  OKData = kTRUE;
3163  }
3164 
3165  //------------------------------- Build 2D matrix to be ploted from 1D read histo (ViewStex)
3166  TMatrixD read_matrix(nb_binx, nb_biny);
3167  for(Int_t i=0; i<nb_binx; i++)
3168  {for(Int_t j=0; j<nb_biny; j++){read_matrix(i,j)=(Double_t)0.;}}
3169 
3170  if ( OKData == kTRUE )
3171  {
3172  fStatusDataExist = kTRUE;
3173 
3174  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
3175  {
3176  if( arg_AlreadyRead == fTobeRead )
3177  {n1StexStin = fMyRootFile->GetStexStinFromIndex(i0StexStinEcna);}
3178  if( arg_AlreadyRead >= 1 )
3179  {n1StexStin = i0StexStinEcna+1;}
3180 
3181  if (n1StexStin != -1)
3182  {
3183  //------------------ Geographical bidim filling (ViewStex)
3184  for(Int_t i0StinEcha=0; i0StinEcha<fEcal->MaxCrysInStin(); i0StinEcha++)
3185  {
3186  Int_t iStexEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinEcha;
3187  Int_t i_xgeo = GetXCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3188  Int_t i_ygeo = GetYCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3189 
3190  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
3191  {
3192  read_matrix(i_xgeo, i_ygeo) = partial_histp(iStexEcha);
3193  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
3194  (Double_t)read_matrix(i_xgeo, i_ygeo));
3195  }
3196  }
3197  }
3198  }
3199 
3200  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (ViewStex)
3201 
3202  //................................ Put histo min max values
3203  //.......... default if flag not set to "ON"
3204  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3205  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3206 
3207  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
3208  //.......... user's value if flag set to "ON"
3209  if( fFlagUserHistoMin == "ON" )
3210  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
3211  if( fFlagUserHistoMax == "ON" )
3212  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
3213  //................................. automatic min and/or max
3214  if( fFlagUserHistoMin == "AUTO" )
3215  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
3216  if( fFlagUserHistoMax == "AUTO" )
3217  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
3218  //...................................... histo set ymin and ymax
3219  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3220 
3221  // ************************** A GARDER EN RESERVE *******************************
3222  //............. special contour level for correlations (square root wise scale)
3223  //if ( HistoCode == "D_MCs_ChNb" )
3224  //{
3225  // Int_t nb_niv = 9;
3226  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
3227  // SqrtContourLevels(nb_niv, &cont_niv[0]);
3228  // h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
3229  // delete [] cont_niv; fCdelete++;
3230  //}
3231  // ******************************** (FIN RESERVE) *******************************
3232 
3233  // =================================== P L O T S ======================== (ViewStex)
3234 
3235  char* f_in = new char[fgMaxCar]; fCnew++;
3236 
3237  //...................... Taille/format canvas
3238  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3239  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3240 
3241  if( fFlagSubDet == "EB")
3242  {canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3243  canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");}
3244  if( fFlagSubDet == "EE")
3245  {canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3246  canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");}
3247 
3248  //............................................... paves commentaires (ViewStex)
3250 
3251  //------------------------------------ Canvas name ----------------- (ViewStex)
3252  TString name_cov_cor;
3253  Int_t MaxCar = fgMaxCar;
3254  name_cov_cor.Resize(MaxCar);
3255  name_cov_cor = "?";
3256 
3257  if( HistoCode == "D_NOE_ChNb"){name_cov_cor = "Nb_Of_D_Adc_EvDs";}
3258  if( HistoCode == "D_Ped_ChNb"){name_cov_cor = "Pedestals";}
3259  if( HistoCode == "D_TNo_ChNb"){name_cov_cor = "Total_noise";}
3260  if( HistoCode == "D_MCs_ChNb"){name_cov_cor = "Mean_Corss";}
3261  if( HistoCode == "D_LFN_ChNb"){name_cov_cor = "Low_Fq_Noise";}
3262  if( HistoCode == "D_HFN_ChNb"){name_cov_cor = "High_Fq_Noise";}
3263  if( HistoCode == "D_SCs_ChNb"){name_cov_cor = "Sigma_Corss";}
3264 
3265  TString name_visu;
3266  MaxCar = fgMaxCar;
3267  name_visu.Resize(MaxCar);
3268  name_visu = "colz";
3269 
3270  TString flag_already_read;
3271  MaxCar = fgMaxCar;
3272  flag_already_read.Resize(MaxCar);
3273  flag_already_read = "?";
3274  sprintf(f_in,"M%d", arg_AlreadyRead); flag_already_read = f_in;
3275 
3276  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%s%d_%s_HocoVeco_R%s",
3277  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
3279  name_visu.Data(), flag_already_read.Data());
3280 
3281  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");}
3282  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");}
3283 
3284  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3285  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3286 
3287  // cout << "*TEcnaHistos::ViewStex(...)> Plot is displayed on canvas ----> " << f_in << endl;
3288 
3289  delete [] f_in; f_in = 0; fCdelete++;
3290 
3291  //------------------------ Canvas draw and update ------------ (ViewStex)
3292  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
3293  fPavComStex->Draw();
3294  fPavComAnaRun->Draw();
3295  fPavComNbOfEvts->Draw();
3296 
3297  //----------------------------------------------------------- pad margins
3298  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3299  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3300  Double_t x_margin = x_low;
3301  Double_t y_margin = y_low;
3302  MainCanvas->Divide( 1, 1, x_margin, y_margin);
3303  // Divide(nx, ny, x_margin, y_margin, color);
3304  gPad->cd(1);
3305  //........................... specific EE
3306  if( fFlagSubDet == "EE" )
3307  {Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3308  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3309  TVirtualPad* main_subpad = gPad;
3310  main_subpad->SetPad(x_low, y_low, x_up, y_up);}
3311 
3312  //------------------------------------------------------------
3313  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3314  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3315 
3316  h_geo_bid->DrawCopy("COLZ");
3317 
3318  // trace de la grille: un rectangle = une tour ou un SC ---------------- (ViewStex)
3320  gPad->Draw();
3321  gPad->Update();
3322 
3323  //..................... retour aux options standard
3324  Bool_t b_true = 1;
3325  h_geo_bid->SetStats(b_true);
3326  h_geo_bid->Delete(); h_geo_bid = 0; fCdeleteRoot++;
3327 
3328  // delete MainCanvas; fCdeleteRoot++;
3329  } // end of if OKData == kTRUE )
3330  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
3331  } // end of if OKFileExists == kTRUE )
3332  else
3333  {
3334  fStatusFileFound = kFALSE;
3335 
3336  cout << "!TEcnaHistos::ViewStex(...)> *ERROR* =====> "
3337  << " ROOT file not found" << fTTBELL << endl;
3338  }
3339 } // end of ViewStex(...)
3340 
3341 //===========================================================================
3342 //
3343 // StexHocoVecoLHFCorcc(***)
3344 //
3345 // Geographical view of the cor(c,c) matrices (mean over samples) of
3346 // all (Stin_A,Stin_A) [case A=B only] of a given Stex (BIG MATRIX)
3347 //
3348 //===========================================================================
3349 void TEcnaHistos::StexHocoVecoLHFCorcc(const TString& Freq)
3350 {
3351 // (Hoco, Veco) matrices for all the Stins of a Stex
3352 
3358 
3359  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (StexHocoVecoLHFCorcc)
3360  {
3361  fStatusFileFound = kTRUE;
3362 
3364  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3365  //cout << "*TEcnaHistos::StexHocoVecoLHFCorcc(...)> Data are analyzed from file ----> "
3366  // << fp_name_short << endl;
3367 
3371 
3372  //......................... matrix title
3373  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
3374 
3375  if( fFlagSubDet == "EB" && Freq == "LF" )
3376  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each tower in SM");}
3377  if( fFlagSubDet == "EB" && Freq == "HF" )
3378  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each tower in SM");}
3379  if( fFlagSubDet == "EE" && Freq == "LF" )
3380  {sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each SC in Dee");}
3381  if( fFlagSubDet == "EE" && Freq == "HF" )
3382  {sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each SC in Dee");}
3383 
3384  //................................. Axis parameters
3385  Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex()*fEcal->MaxCrysInStin();
3386  Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex()*fEcal->MaxCrysInStin();
3387 
3388  Int_t nb_binx = GeoBidSizeHoco;
3389  Int_t nb_biny = GeoBidSizeVeco;
3390  Axis_t xinf_bid = (Axis_t)0.;
3391  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3392  Axis_t yinf_bid = (Axis_t)0.;
3393  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3394 
3395  TString axis_x_var_name = " #Hoco ";
3396  TString axis_y_var_name = " #varVeco ";
3397 
3398  //======================================================== (StexHocoVecoLHFCorcc)
3399  TVectorD Stin_numbers(fEcal->MaxStinEcnaInStex());
3400  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){Stin_numbers(i)=(Double_t)0.;}
3401  Stin_numbers = fMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
3402 
3403  if ( fMyRootFile->DataExist() == kTRUE )
3404  {
3405  fStatusDataExist = kTRUE;
3406 
3407  //............. matrices reading and histogram filling
3408  TMatrixD partial_matrix(fEcal->MaxCrysEcnaInStex(), fEcal->MaxCrysEcnaInStex());
3409  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++)
3410  {for(Int_t j=0; j<fEcal->MaxCrysEcnaInStex(); j++){partial_matrix(i,j)=(Double_t)0.;}}
3411 
3412  if( Freq == "LF")
3413  {
3415  }
3416  if( Freq == "HF")
3417  {
3419  }
3420 
3421  if ( fMyRootFile->DataExist() == kTRUE )
3422  {
3423  fStatusDataExist = kTRUE;
3424 
3425  //............................... 2D histo booking
3426  TH2D* h_geo_bid = new TH2D("geobidim_HocoVecoLHFCorcc", f_in_mat_tit,
3427  nb_binx, xinf_bid, xsup_bid,
3428  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3429  h_geo_bid->Reset();
3430 
3432 
3433  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
3434  {
3435  Int_t n1StexStin = (Int_t)Stin_numbers(i0StexStinEcna);
3436  Int_t offset_x = ((n1StexStin-1)/fEcal->MaxStinVecoInStex())*fEcal->MaxCrysInStin();
3437  Int_t offset_y = ((n1StexStin-1)%fEcal->MaxStinVecoInStex())*fEcal->MaxCrysInStin();
3438 
3439  if (n1StexStin != -1)
3440  {
3441  //================================================= (StexHocoVecoLHFCorcc)
3442  //------------------ Geographical bidim filling
3443  for(Int_t i0StinEcha=0; i0StinEcha<fEcal->MaxCrysInStin(); i0StinEcha++)
3444  {
3445  for(Int_t j0StinEcha=0; j0StinEcha<fEcal->MaxCrysInStin(); j0StinEcha++)
3446  {
3447  Int_t i_xgeo = offset_x + i0StinEcha;
3448  Int_t i_ygeo = offset_y + j0StinEcha;
3449 
3450  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
3451  {
3452  Int_t iEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + i0StinEcha;
3453  Int_t jEcha = (n1StexStin-1)*fEcal->MaxCrysInStin() + j0StinEcha;
3454 
3455  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
3456  (Double_t)partial_matrix(iEcha, jEcha));
3457  }
3458  }
3459  }
3460  }
3461  }
3462 
3463  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (StexHocoVecoLHFCorcc)
3464 
3465  TString HistoCode = "H2CorccInStins";
3466 
3467  //................................ Put histo min max values
3468  //.......... default if flag not set to "ON"
3469  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3470  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3471 
3472  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
3473  //.......... user's value if flag set to "ON"
3474  if( fFlagUserHistoMin == "ON" )
3475  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
3476  if( fFlagUserHistoMax == "ON" )
3477  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
3478  //................................. automatic min and/or max
3479  if( fFlagUserHistoMin == "AUTO" )
3480  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
3481  if( fFlagUserHistoMax == "AUTO" )
3482  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
3483  //...................................... histo set ymin and ymax
3484  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3485 
3486  // ----------------------------------- P L O T S (StexHocoVecoLHFCorcc)
3487 
3488  char* f_in = new char[fgMaxCar]; fCnew++;
3489 
3490  //...................... Taille/format canvas
3491 
3492  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3493  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3494 
3495  if( fFlagSubDet == "EB")
3496  {canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3497  canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");}
3498  if( fFlagSubDet == "EE")
3499  {canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3500  canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");}
3501 
3502  //..................................... paves commentaires (StexHocoVecoLHFCorcc)
3504 
3505  //----------------- Canvas name ------- (StexHocoVecoLHFCorcc)
3506  TString name_cov_cor;
3507  Int_t MaxCar = fgMaxCar;
3508  name_cov_cor.Resize(MaxCar);
3509  if( Freq == "LF" ){name_cov_cor = "StexLFCorcc";}
3510  if( Freq == "HF" ){name_cov_cor = "StexHFCorcc";}
3511 
3512  TString name_visu;
3513  MaxCar = fgMaxCar;
3514  name_visu.Resize(MaxCar);
3515  name_visu = "colz";
3516 
3517  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_Stex%s%d_%s_HocoVeco",
3518  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
3520  name_visu.Data());
3521 
3522  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");}
3523  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");}
3524 
3525  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3526  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3527 
3528  // cout << "*TEcnaHistos::StexHocoVecoLHFCorcc(...)> Plot is displayed on canvas ----> "
3529  // << f_in << endl;
3530 
3531  delete [] f_in; f_in = 0; fCdelete++;
3532 
3533  //------------ Canvas draw and update ------ (StexHocoVecoLHFCorcc)
3534  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
3535  fPavComStex->Draw();
3536  fPavComAnaRun->Draw();
3537  fPavComNbOfEvts->Draw();
3538 
3539  //----------------------------------------------------------- pad margins
3540  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3541  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3542  Double_t x_margin = x_low;
3543  Double_t y_margin = y_low;
3544  MainCanvas->Divide( 1, 1, x_margin, y_margin);
3545  // Divide(nx, ny, x_margin, y_margin, color);
3546  gPad->cd(1);
3547  //........................... specific EE
3548  if( fFlagSubDet == "EE" )
3549  {
3550  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3551  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3552  TVirtualPad* main_subpad = gPad;
3553  main_subpad->SetPad(x_low, y_low, x_up, y_up);
3554  }
3555 
3556  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3557  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3558 
3559  h_geo_bid->DrawCopy("COLZ");
3560 
3561  // trace de la grille: un rectangle = une tour (StexHocoVecoLHFCorcc)
3562  ViewStexGrid(fFapStexNumber, "corcc");
3563  gPad->Draw();
3564  gPad->Update();
3565 
3566  //..................... retour aux options standard
3567  Bool_t b_true = 1;
3568  h_geo_bid->SetStats(b_true);
3569  h_geo_bid->Delete(); h_geo_bid = 0; fCdeleteRoot++;
3570 
3571  // delete MainCanvas; fCdeleteRoot++;
3572  }
3573  }
3574  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
3575  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
3576  else
3577  {
3578  fStatusFileFound = kFALSE;
3579 
3580  cout << "!TEcnaHistos::StexHocoVecoLHFCorcc(...)> *ERROR* =====> "
3581  << " ROOT file not found" << fTTBELL << endl;
3582  }
3583 } // end of StexHocoVecoLHFCorcc
3584 
3585 //==================================================================================
3586 //
3587 // GetXCrysInStex, GetYCrysInStex
3588 //
3589 //==================================================================================
3590 Int_t TEcnaHistos::GetXCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin,
3591  const Int_t& i0StinEcha)
3592 {
3593 //Gives the X crystal coordinate in the geographic view of one Stex
3594 // (X = 0 to MaxStinHocoInStex*NbCrysHocoInStin - 1)
3595 
3596  Int_t ix_geo = 0;
3597 
3598  if( fFlagSubDet == "EB")
3599  {TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3600  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, i0StinEcha, StexNumber);
3601  ix_geo = (n1StexCrys-1)/fEcal->MaxCrysVecoInStex(); // ix_geo for EB+
3602  if( ctype == "EB-"){ix_geo = fEcal->MaxCrysHocoInStex() - ix_geo - 1;}}
3603 
3604  if( fFlagSubDet == "EE")
3605  {TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
3606  ix_geo = 0;
3607  if( DeeDir == "right" )
3608  {ix_geo = fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha) - 1;}
3609  if( DeeDir == "left" )
3610  {ix_geo = fEcal->MaxCrysIXInDee() - fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha);}}
3611 
3612  return ix_geo;
3613 }
3614 
3615 Int_t TEcnaHistos::GetYCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin,
3616  const Int_t& j0StinEcha)
3617 {
3618 //Gives the Y crystal coordinate in the geographic view of one Stex
3619 // (Y = 0 to MaxStinVecoInStex*NbCrysVecoInStin - 1)
3620 
3621  Int_t iy_geo = 0;
3622 
3623  if( fFlagSubDet == "EB")
3624  {TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3625  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, j0StinEcha, StexNumber);
3626  Int_t ix_geo = (n1StexCrys-1)/fEcal->MaxCrysVecoInStex(); // ix_geo for EB+
3627  iy_geo = n1StexCrys - 1 - ix_geo*fEcal->MaxCrysVecoInStex(); // iy_geo for EB+
3628  if( ctype == "EB-"){iy_geo = fEcal->MaxCrysVecoInStex() - iy_geo - 1;}}
3629 
3630  if( fFlagSubDet == "EE")
3631  {iy_geo = fEcalNumbering->GetJYCrysInDee(StexNumber, n1StexStin, j0StinEcha) - 1;}
3632 
3633  return iy_geo;
3634 }
3635 
3636 //===========================================================================
3637 //
3638 // StexStinNumbering, ViewStexStinNumberingPad
3639 //
3640 // independent of the ROOT file => StexNumber as argument
3641 //
3642 //===========================================================================
3643 void TEcnaHistos::StexStinNumbering(const Int_t& StexNumber)
3644 {
3645 //display the Stin numbering of the Stex
3646 
3647  if( fFlagSubDet == "EB" ){SMTowerNumbering(StexNumber);}
3648  if( fFlagSubDet == "EE" ){DeeSCNumbering(StexNumber);}
3649 }
3650 // end of StexStinNumbering
3651 
3652 //=============================================================================
3653 //
3654 // ViewStexStinNumberingPad
3655 // independent of the ROOT file => StexNumber as argument
3656 //
3657 //=============================================================================
3658 void TEcnaHistos::ViewStexStinNumberingPad(const Int_t& StexNumber)
3659 {
3660 //display the Stin numbering of the Stex in a Pad
3661 
3662  if( fFlagSubDet == "EB"){ViewSMTowerNumberingPad(StexNumber);}
3663  if( fFlagSubDet == "EE"){ViewDeeSCNumberingPad(StexNumber);}
3664 }
3665 //----------------> end of ViewStexStinNumberingPad()
3666 
3667 //==========================================================================
3668 //
3669 // ViewStexGrid
3670 // independent of the ROOT file => StexNumber as argument
3671 //
3672 //==========================================================================
3673 void TEcnaHistos::ViewStexGrid(const Int_t& StexNumber, const TString& c_option)
3674 {
3675  //Grid of one Stex with axis Hoco and Veco
3676 
3677  if( fFlagSubDet == "EB"){ViewSMGrid(StexNumber, c_option);}
3678  if( fFlagSubDet == "EE"){ViewDeeGrid(StexNumber, c_option);}
3679 
3680 } // end of ViewStexGrid
3681 
3682 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& S P E C I F I C &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3683 
3684 //======================================= BARREL ===============================
3685 void TEcnaHistos::SMTowerNumbering(const Int_t& SMNumber)
3686 {
3687  //display the tower numbering of the super-module
3688 
3689  if( (SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB()) )
3690  {
3691  Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow();
3692  Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3693 
3694  Int_t nb_binx = GeoBidSizeEta;
3695  Int_t nb_biny = GeoBidSizePhi;
3696  Axis_t xinf_bid = (Axis_t)0.;
3697  Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
3698  Axis_t yinf_bid = (Axis_t)0.;
3699  Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
3700 
3701  TString axis_x_var_name = " #eta ";
3702  TString axis_y_var_name = " #varphi ";
3703 
3704  //------------------------------------------------------------------- SMTowerNumbering
3705 
3706  //............. matrices reading and histogram filling
3707  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
3708 
3709  sprintf(f_in_mat_tit, "SM tower numbering");
3710 
3711  // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
3712 
3713  TH2D* h_empty_bid = new TH2D("grid_bidim_eta_phi", f_in_mat_tit,
3714  nb_binx, xinf_bid, xsup_bid,
3715  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
3716  h_empty_bid->Reset();
3717 
3718  h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
3719  h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
3720 
3721  // ------------------------------------------------ P L O T S (SMTowerNumbering)
3722 
3723  char* f_in = new char[fgMaxCar]; fCnew++;
3724 
3725  //...................... Taille/format canvas
3726 
3727  UInt_t canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3728  UInt_t canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");
3729 
3730  //............................................... options generales
3731 
3733 
3734  //............................................... paves commentaires (SMTowerNumbering)
3735  SetAllPavesViewStex("Numbering", SMNumber);
3736 
3737  //------------------------------------ Canvas name ----------------- (SMTowerNumbering)
3738 
3739  sprintf(f_in, "tower_numbering_for_SuperModule_SM%d", SMNumber);
3740 
3741  SetHistoPresentation((TH1D*)h_empty_bid,"Stex2DEB");
3742 
3743  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
3744  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
3745 
3746  // cout << "*TEcnaHistosEB::ViewSM(...)> Plot is displayed on canvas ----> " << f_in << endl;
3747 
3748  delete [] f_in; f_in = 0; fCdelete++;
3749 
3750  //------------------------ Canvas draw and update ------------ (SMTowerNumbering)
3751  fPavComStex->Draw();
3752 
3753  Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3754  Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
3755  MainCanvas->Divide(1, 1, x_margin, y_margin);
3756  gPad->cd(1);
3757 
3758  h_empty_bid->DrawCopy("COL"); // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
3759 
3760  ViewSMTowerNumberingPad(SMNumber);
3761  gPad->Update();
3762 
3763  //..................... retour aux options standard
3764  Bool_t b_true = 1;
3765  h_empty_bid->SetStats(b_true);
3766 
3767  h_empty_bid->Delete(); h_empty_bid = 0; fCdeleteRoot++;
3768 
3769  // delete MainCanvas; fCdeleteRoot++;
3770 
3771  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
3772  }
3773  else
3774  {
3775  cout << "!TEcnaHistos::SMTowerNumbering(...)> SM = " << SMNumber
3776  << ". Out of range ( range = [1," << fEcal->MaxSMInEB() << "] )" << fTTBELL << endl;
3777  }
3778 }
3779 // end of SMTowerNumbering
3780 
3781 void TEcnaHistos::ViewSMTowerNumberingPad(const Int_t& SMNumber)
3782 {
3783  //display the tower numbering of the super-module in a Pad
3784 
3785  gStyle->SetTitleW(0.2); // taille titre histos
3786  gStyle->SetTitleH(0.07);
3787 
3788  ViewSMGrid(SMNumber, " ");
3789 
3790  Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
3791  Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
3792 
3793  //..... Ecriture des numeros de tours dans la grille..... (ViewSMTowerNumberingPad)
3794 
3795  char* f_in = new char[fgMaxCar]; fCnew++;
3796  gStyle->SetTextSize(0.075);
3797 
3798  // x_channel, y_channel: coordinates of the text "Txx"
3799  Int_t y_channel = 12;
3800  Int_t x_channel = 12;
3801 
3802  Int_t max_tow_phi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3803 
3804  //------------------ LOOP ON THE SM_TOWER NUMBER (ViewSMTowerNumberingPad)
3805 
3806  TText *text_SMtow_num = new TText(); fCnewRoot++;
3807 
3808  for (Int_t i_SMtow = 1; i_SMtow <= fEcal->MaxTowInSM(); i_SMtow++)
3809  {
3810  if(fEcalNumbering->GetTowerLvrbType(i_SMtow) == "top")
3811  {text_SMtow_num->SetTextColor(couleur_rouge);}
3812  if(fEcalNumbering->GetTowerLvrbType(i_SMtow) == "bottom")
3813  {text_SMtow_num->SetTextColor(couleur_bleu_fonce);}
3814 
3815  //................................ x from eta
3816  Double_t x_from_eta = fEcalNumbering->GetEta(SMNumber, i_SMtow, x_channel) - (Double_t)1;
3817  if(fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-")
3818  {x_from_eta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow() + x_from_eta + (Double_t)1;}
3819 
3820  //................................ y from phi
3821  Double_t y_from_phi = max_tow_phi - 1
3822  - (fEcalNumbering->GetPhi(SMNumber, i_SMtow, y_channel) - fEcalNumbering->GetPhiMin(SMNumber));
3823  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-")
3824  {y_from_phi = - y_from_phi + fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow() - (Double_t)1;}
3825 
3826  sprintf(f_in, "%d", i_SMtow);
3827  text_SMtow_num->DrawText(x_from_eta, y_from_phi, f_in); // <=== prend du temps si on mets "T%d" dans le sprintf
3828  }
3829 
3830  text_SMtow_num->Delete(); text_SMtow_num = 0; fCdeleteRoot++;
3831 
3832  //.................................................... legende (ViewSMTowerNumberingPad)
3833  Double_t offset_tow_tex_eta = (Double_t)8.;
3834  Double_t offset_tow_tex_phi = (Double_t)15.;
3835 
3836  Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
3837  Double_t x_legend = (Double_t)0.;
3838  Double_t y_legend = (Double_t)0.;
3839 
3840  Int_t ref_tower = fEcal->MaxTowInSM();
3841 
3842  //................................................. LVRB TOP (ViewSMTowerNumberingPad)
3843  gStyle->SetTextSize(0.075);
3844  gStyle->SetTextColor(couleur_rouge);
3845  x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
3846  y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
3847 
3848  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" )
3849  {
3850  x_legend = x_legend + offset_tow_tex_eta;
3851  y_legend = y_legend + offset_tow_tex_phi;
3852  }
3853  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" )
3854  {
3855  x_legend = -x_legend + offset_tow_tex_eta;
3856  y_legend = y_legend + offset_tow_tex_phi;
3857  }
3858 
3859  sprintf( f_in, "xx");
3860  TText *text_legend_rouge = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3861  text_legend_rouge->Draw();
3862  gStyle->SetTextSize(0.05);
3863  x_legend = x_legend - (Double_t)3.5;
3864  y_legend = y_legend - (Double_t)2.;
3865  sprintf(f_in, " LVRB ");
3866  TText *text_legend_rouge_expl = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3867  text_legend_rouge_expl->Draw();
3868  y_legend = y_legend - (Double_t)1.75;
3869  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" ){sprintf(f_in, " <--- ");}
3870  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" ){sprintf(f_in, " ---> ");}
3871  TText *text_legend_rouge_expm = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3872  text_legend_rouge_expm->Draw();
3873  //text_legend_rouge_expl->Delete(); text_legend_rouge_expl = 0; fCdeleteRoot++;
3874 
3875  //................................................. LVRB BOTTOM (ViewSMTowerNumberingPad)
3876  gStyle->SetTextSize(0.075);
3877  gStyle->SetTextColor(couleur_bleu_fonce);
3878  x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
3879  y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
3880 
3881  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" )
3882  {
3883  x_legend = x_legend + offset_tow_tex_eta;
3884  y_legend = y_legend + offset_tow_tex_phi/3;
3885  }
3886  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" )
3887  {
3888  x_legend = -x_legend + offset_tow_tex_eta;
3889  y_legend = y_legend + offset_tow_tex_phi/3;
3890  }
3891 
3892  sprintf(f_in, "xx");
3893  TText *text_legend_bleu = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3894  text_legend_bleu->Draw();
3895  //text_legend_bleu->Delete(); text_legend_bleu = 0; fCdeleteRoot++;
3896  gStyle->SetTextSize(0.05);
3897  x_legend = x_legend - (Double_t)3.5;
3898  y_legend = y_legend - (Double_t)2.;
3899  sprintf( f_in, " LVRB ");
3900  TText *text_legend_bleu_expl = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3901  text_legend_bleu_expl->Draw();
3902  y_legend = y_legend - (Double_t)1.75;
3903  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+" ){sprintf( f_in, " ---> ");}
3904  if( fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-" ){sprintf( f_in, " <--- ");}
3905  TText *text_legend_bleu_expm = new TText(x_legend, y_legend, f_in); fCnewRoot++;
3906  text_legend_bleu_expm->Draw();
3907  //text_legend_bleu_expl->Delete(); text_legend_bleu_expl = 0; fCdeleteRoot++;
3908 
3909  delete [] f_in; f_in = 0; fCdelete++;
3910 
3911  gStyle->SetTextColor(couleur_noir);
3912 }
3913 //----------------> end of ViewSMTowerNumberingPad()
3914 
3915 void TEcnaHistos::ViewSMGrid(const Int_t& SMNumber, const TString& c_option)
3916 {
3917  //Grid of one supermodule with axis eta and phi
3918 
3919  Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysEtaInTow();
3920  Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysPhiInTow();
3921 
3922  if ( c_option == "corcc")
3923  {
3924  GeoBidSizeEta = fEcal->MaxTowEtaInSM()*fEcal->MaxCrysInTow();
3925  GeoBidSizePhi = fEcal->MaxTowPhiInSM()*fEcal->MaxCrysInTow();
3926  }
3927 
3928  Int_t nb_binx = GeoBidSizeEta;
3929  Int_t nb_biny = GeoBidSizePhi;
3930  Axis_t xinf_bid = (Axis_t)0.;
3931  Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
3932  Axis_t yinf_bid = (Axis_t)0.;
3933  Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
3934 
3935  //---------------- trace de la grille: un rectangle = une tour
3936 
3937  Int_t size_eta = fEcal->MaxCrysEtaInTow();
3938  Int_t size_phi = fEcal->MaxCrysPhiInTow();
3939  if ( c_option == "corcc")
3940  {
3941  size_eta = fEcal->MaxCrysInTow();
3942  size_phi = fEcal->MaxCrysInTow();
3943  }
3944  Int_t max_x = nb_binx/size_eta;
3945  Int_t max_y = nb_biny/size_phi;
3946 
3947  //............................. lignes horizontales
3948  Double_t yline = (Double_t)yinf_bid;
3949 
3950  Double_t xline_left = (Double_t)xinf_bid;
3951  Double_t xline_right = (Double_t)xsup_bid;
3952 
3953  for( Int_t j = 0 ; j < max_y ; j++)
3954  {
3955  yline = yline + (Double_t)size_phi;
3956  TLine *lin;
3957  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
3958  lin->Draw();
3959  // delete lin; fCdeleteRoot++;
3960  }
3961 
3962  //.......................... lignes verticales
3963  Double_t xline = (Double_t)xinf_bid - (Double_t)size_eta;
3964 
3965  Double_t yline_bot = (Double_t)yinf_bid;
3966  Double_t yline_top = (Double_t)ysup_bid;
3967 
3968  Color_t coul_surligne = fCnaParHistos->ColorDefinition("noir");
3969  Color_t coul_textmodu = fCnaParHistos->ColorDefinition("vert36");
3970 
3971  //............................ Mj text
3972  gStyle->SetTextColor(coul_textmodu);
3973  gStyle->SetTextSize(0.075);
3974 
3975  char* f_in = new char[fgMaxCar]; fCnew++;
3976 
3977  for( Int_t i = 0 ; i < max_x ; i++)
3978  {
3979  xline = xline + (Double_t)size_eta;
3980  TLine *lin;
3981  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
3982 
3983  //............. Surlignage separateur des modules
3984  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 4 || i == 8 || i == 12) )
3985  {lin->SetLineWidth(2); lin->SetLineColor(coul_surligne);}
3986  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 5 || i == 9 || i == 13) )
3987  {lin->SetLineWidth(2); lin->SetLineColor(coul_surligne);}
3988 
3989  lin->Draw();
3990  // delete lin; fCdeleteRoot++;
3991 
3992  //............. Numeros des modules
3993  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 2 || i == 6 || i == 10 || i == 14) )
3994  {
3995  if( i == 2 ){sprintf( f_in, "M4");}
3996  if( i == 6 ){sprintf( f_in, "M3");}
3997  if( i == 10 ){sprintf( f_in, "M2");}
3998  if( i == 14 ){sprintf( f_in, "M1");}
3999 
4000  TText *text_num_module = new TText(xline + 1, yline_top + 1, f_in); fCnewRoot++;
4001  text_num_module->Draw();
4002  //text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
4003  }
4004  if( (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 3 || i == 7 || i == 11 || i == 15) )
4005  {
4006  if( i == 3 ){sprintf( f_in, "M1");}
4007  if( i == 7 ){sprintf( f_in, "M2");}
4008  if( i == 11 ){sprintf( f_in, "M3");}
4009  if( i == 15 ){sprintf( f_in, "M4");}
4010 
4011  TText *text_num_module = new TText(xline, yline_top + 1, f_in); fCnewRoot++;
4012  text_num_module->Draw();
4013  //text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
4014  }
4015  }
4016  delete [] f_in; f_in = 0; fCdelete++;
4017 
4018  //------------------ trace axes en eta et phi --------------- ViewSMGrid
4019 
4020  Int_t MatSize = fEcal->MaxCrysEtaInTow();
4021  if ( c_option == "corcc"){MatSize = fEcal->MaxCrysInTow();}
4022 
4023  Int_t size_eta_sm = fEcal->MaxTowEtaInSM();
4024  Int_t size_phi_sm = fEcal->MaxTowPhiInSM();
4025 
4026  //...................................................... Axe i(eta) (bottom x) ViewSMGrid
4027  Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber);
4028  Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber);
4029 
4030  TString x_var_name = GetHocoVecoAxisTitle("ietaSM");;
4031  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
4032 
4033  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
4034  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("SMx");
4035  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
4036  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SMx");
4037  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SMx");
4038 
4039  new TF1("f1", x_direction.Data(), eta_min, eta_max); fCnewRoot++;
4040  TGaxis* sup_axis_x = 0;
4041 
4042  if( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
4043  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm*MatSize), (Float_t)0.,
4044  "f1", size_eta_sm, "SC" , 0.); fCnewRoot++;}
4045 
4046  if( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
4047  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm*MatSize), (Float_t)0.,
4048  "f1", size_eta_sm, "SC" , 0.); fCnewRoot++;}
4049 
4050  sup_axis_x->SetTitle(x_var_name);
4051  sup_axis_x->SetTitleSize(tit_siz_x);
4052  sup_axis_x->SetTitleOffset(tit_off_x);
4053  sup_axis_x->SetLabelSize(lab_siz_x);
4054  sup_axis_x->SetLabelOffset(lab_off_x);
4055  sup_axis_x->SetTickSize(tic_siz_x);
4056  sup_axis_x->Draw("SAME");
4057 
4058  //...................................................... Axe phi (y) ViewSMGrid
4059  Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber);
4060  Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber);
4061 
4062  TString y_var_name = GetHocoVecoAxisTitle("phi");
4063  TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
4064 
4065  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
4066  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("SMy");
4067  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
4068  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SMy");
4069  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SMy");
4070 
4071  new TF1("f2", y_direction.Data(), phi_min, phi_max); fCnewRoot++;
4072  TGaxis* sup_axis_y = 0;
4073 
4074  if ( y_direction == "-x" ) // ALWAYS IN THIS CASE: ymin->ymax <=> top->bottom ("-x") direction
4075  {sup_axis_y = new TGaxis(-(Float_t)1.5*(Float_t)size_eta, (Float_t)0.,
4076  -(Float_t)1.5*(Float_t)size_eta, (Float_t)(size_phi_sm*MatSize),
4077  "f2", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;}
4078 
4079  if ( y_direction == "x" ) // NEVER IN THIS CASE: ymin->ymax <=> bottom->top ("x") direction
4080  {sup_axis_y = new TGaxis(-(Float_t)1.5*(Float_t)size_eta, (Float_t)0.,
4081  -(Float_t)1.5*(Float_t)size_eta, (Float_t)(size_phi_sm*MatSize),
4082  "f2", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;}
4083 
4084  sup_axis_y->SetTitle(y_var_name);
4085  sup_axis_y->SetTitleSize(tit_siz_y);
4086  sup_axis_y->SetTitleOffset(tit_off_y);
4087  sup_axis_y->SetLabelSize(lab_siz_y);
4088  sup_axis_y->SetLabelOffset(lab_off_y);
4089  sup_axis_y->SetTickSize(tic_siz_y);
4090  sup_axis_y->Draw("SAME");
4091 
4092  //...................................................... Axe jphi (jy) ViewSMGrid
4093  Double_t jphi_min = fEcalNumbering->GetJPhiMin(SMNumber);
4094  Double_t jphi_max = fEcalNumbering->GetJPhiMax(SMNumber);
4095 
4096  TString jy_var_name = " ";
4097  TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
4098 
4099  new TF1("f3", jy_direction.Data(), jphi_min, jphi_max); fCnewRoot++;
4100  TGaxis* sup_axis_jy = 0;
4101 
4102  //............; essai
4103  sup_axis_jy = new TGaxis((Float_t)0., (Float_t)0.,
4104  (Float_t)0., (Float_t)(size_phi_sm*MatSize),
4105  "f3", (Int_t)size_phi_sm, "SC", 0.); fCnewRoot++;
4106 
4107  if ( jy_direction == "-x" ) // IN THIS CASE FOR EB+: ymin->ymax <=> top->bottom ("-x") direction
4108  {jy_var_name = GetEtaPhiAxisTitle("jphiSMB+");}
4109 
4110  if ( jy_direction == "x" ) // IN THIS CASE FOR EB-: ymin->ymax <=> bottom->top ("x") direction
4111  {jy_var_name = GetEtaPhiAxisTitle("jphiSMB-");}
4112 
4113  lab_off_y = fCnaParHistos->AxisLabelOffset("SMyInEB");
4114 
4115  sup_axis_jy->SetTitle(jy_var_name);
4116  sup_axis_jy->SetTitleSize(tit_siz_y);
4117  sup_axis_jy->SetTitleOffset(tit_off_y);
4118  sup_axis_jy->SetLabelSize(lab_siz_y);
4119  sup_axis_jy->SetLabelOffset(lab_off_y);
4120  sup_axis_jy->SetTickSize(tic_siz_y);
4121  sup_axis_jy->Draw("SAME");
4122 
4123  //--------------------------- ViewSMGrid
4124 
4125  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
4126 
4127 } // end of ViewSMGrid
4128 
4129 //======================================= ENDCAP ===============================
4130 void TEcnaHistos::DeeSCNumbering(const Int_t& DeeNumber)
4131 {
4132  //display the SC numbering of the Dee
4133 
4134  if( (DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE()) )
4135  {
4136  Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysIXInSC();
4137  Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysIYInSC();
4138 
4139  Int_t nb_binx = GeoBidSizeIX;
4140  Int_t nb_biny = GeoBidSizeIY;
4141  Axis_t xinf_bid = (Axis_t)0.;
4142  Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4143  Axis_t yinf_bid = (Axis_t)0.;
4144  Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4145 
4146  TString axis_x_var_name = " IX ";
4147  TString axis_y_var_name = " IY ";
4148 
4149  //------------------------------------------------------------------- DeeSCNumbering
4150  //........................................... empty histogram filling
4151  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
4152 
4153  sprintf(f_in_mat_tit, " Dee SC numbering ");
4154 
4155  // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
4156 
4157  TH2D* h_empty_bid = new TH2D("grid_bidim_IX_IY", f_in_mat_tit,
4158  nb_binx, xinf_bid, xsup_bid,
4159  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
4160  h_empty_bid->Reset();
4161 
4162  h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
4163  h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
4164 
4165  // ------------------------------------------------ P L O T S (DeeSCNumbering)
4166 
4167  char* f_in = new char[fgMaxCar]; fCnew++;
4168 
4169  //...................... Taille/format canvas
4170 
4171  UInt_t canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
4172  UInt_t canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");
4173 
4174  //............................................... options generales
4176 
4177  //............................................... paves commentaires (DeeSCNumbering)
4178  SetAllPavesViewStex("Numbering", DeeNumber);
4179 
4180  //------------------------------------ Canvas name ----------------- (DeeSCNumbering)
4181 
4182  sprintf(f_in, "SC_numbering_for_Dee_Dee%d", DeeNumber);
4183  SetHistoPresentation((TH1D*)h_empty_bid,"Stex2DEENb");
4184  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
4185  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
4186 
4187  // cout << "*TEcnaHistosEE::ViewDee(...)> Plot is displayed on canvas ----> " << f_in << endl;
4188 
4189  delete [] f_in; f_in = 0; fCdelete++;
4190 
4191  //------------------------ Canvas draw and update ------------ (DeeSCNumbering)
4192  fPavComStex->Draw();
4193  fPavComCxyz->Draw();
4194 
4195  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
4196  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
4197  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
4198  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
4199 
4200  Double_t x_margin = x_low;
4201  Double_t y_margin = y_low;
4202 
4203  MainCanvas->Divide( 1, 1, x_margin, y_margin);
4204  // Divide(nx, ny, x_margin, y_margin, color);
4205 
4206  gPad->cd(1);
4207  TVirtualPad* main_subpad = gPad;
4208  main_subpad->SetPad(x_low, y_low, x_up, y_up);
4209 
4210  h_empty_bid->DrawCopy("COL"); // il faut tracer un bidim vide pour pouvoir tracer la grille et les axes
4211  ViewDeeSCNumberingPad(DeeNumber);
4212  gPad->Update(); // prend beaucoup de temps...
4213 
4214  //..................... retour aux options standard
4215  Bool_t b_true = 1;
4216  h_empty_bid->SetStats(b_true);
4217 
4218  h_empty_bid->Delete(); h_empty_bid = 0; fCdeleteRoot++;
4219 
4220  // delete MainCanvas; fCdeleteRoot++;
4221 
4222  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
4223  }
4224  else
4225  {
4226  cout << "!TEcnaHistos::DeeSCNumbering(...)> Dee = " << DeeNumber
4227  << ". Out of range ( range = [1," << fEcal->MaxDeeInEE() << "] )" << fTTBELL << endl;
4228  }
4229 }
4230 // end of DeeSCNumbering
4231 
4232 void TEcnaHistos::ViewDeeSCNumberingPad(const Int_t& DeeNumber)
4233 {
4234 //display the SC numbering of the Dee in a Pad
4235 
4236  gStyle->SetTitleW(0.4); // taille titre histos
4237  gStyle->SetTitleH(0.08);
4238 
4239  ViewDeeGrid(DeeNumber, " ");
4240 
4241  //..... SC numbers writing in the grid .... (ViewDeeSCNumberingPad)
4242 
4243  char* f_in = new char[fgMaxCar]; fCnew++;
4244  gStyle->SetTextSize(0.0325);
4245 
4246  //------------------ LOOP ON THE Dee_SC NUMBER (ViewDeeSCNumberingPad)
4247  Int_t x_channel = 0; // => defined here after according to DeeDir and SCQuadType
4248  TText *text_DSSC_num = new TText(); fCnewRoot++;
4249  TText *text_DeeSCCons_num = new TText(); fCnewRoot++;
4250 
4251  for (Int_t n1DeeSCEcna = 1; n1DeeSCEcna <= fEcal->MaxSCEcnaInDee(); n1DeeSCEcna++)
4252  {
4253  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
4254  TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
4255  if( SCQuadType == "top" && DeeDir == "right"){x_channel = 13;}
4256  if( SCQuadType == "top" && DeeDir == "left" ){x_channel = 7;}
4257  if( SCQuadType == "bottom" && DeeDir == "left" ){x_channel = 11;}
4258  if( SCQuadType == "bottom" && DeeDir == "right"){x_channel = 17;}
4259  Int_t i_SCEcha = (Int_t)x_channel;
4260 
4261  Double_t x_from_IX = (Double_t)GetXCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4262  Double_t y_from_IY = (Double_t)GetYCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4263  Double_t y_from_IYp = y_from_IY + (Double_t)1.;
4264  Double_t y_from_IYm = y_from_IY - (Double_t)1.;
4265 
4266  TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
4267  Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
4268  text_DSSC_num->SetTextColor(couleur_SC);
4269  text_DeeSCCons_num->SetTextColor((Color_t)1);
4270 
4271  Int_t i_DSSC = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4272  Int_t i_DeeSCCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4273  if( i_DSSC > 0 )
4274  {
4275  if(
4276  //.................................................... (D2,S9) , (D4,S1)
4277  !(i_DeeSCCons == 33 && n1DeeSCEcna == 60) &&
4278  !(i_DeeSCCons == 33 && n1DeeSCEcna == 119) &&
4279  //................................................... (D2,S8) , (D4,S2)
4280  !(i_DeeSCCons == 29 && n1DeeSCEcna == 32) && // !(29c and 58c)
4281  !(i_DeeSCCons == 29 && n1DeeSCEcna == 138) &&
4282  !(i_DeeSCCons == 29 && n1DeeSCEcna == 157) &&
4283  !(i_DeeSCCons == 58 && n1DeeSCEcna == 176) &&
4284  !(i_DeeSCCons == 58 && n1DeeSCEcna == 193) &&
4285  //.................................................... (D2,S7) , (D4,S3)
4286  !(i_DeeSCCons == 149 && n1DeeSCEcna == 188) &&
4287  //.................................................... (D2,S6) , (D4,S4)
4288  !(i_DeeSCCons == 112 && n1DeeSCEcna == 29) &&
4289  !(i_DeeSCCons == 112 && n1DeeSCEcna == 144) &&
4290  !(i_DeeSCCons == 112 && n1DeeSCEcna == 165) &&
4291  !(i_DeeSCCons == 119 && n1DeeSCEcna == 102) &&
4292  !(i_DeeSCCons == 119 && n1DeeSCEcna == 123) &&
4293  //.................................................... (D2,S5) , (D4,S5)
4294  !(i_DeeSCCons == 132 && n1DeeSCEcna == 41) &&
4295  //----------------------------------------------------------------------
4296  //.................................................... (D1,S1) , (D3,S9)
4297  !(i_DeeSCCons == 182 && n1DeeSCEcna == 60) &&
4298  !(i_DeeSCCons == 182 && n1DeeSCEcna == 119) &&
4299  //.................................................... (D1,S2) , (D3,S8)
4300  !(i_DeeSCCons == 178 && n1DeeSCEcna == 32) && // !(178c and 207c)
4301  !(i_DeeSCCons == 178 && n1DeeSCEcna == 138) &&
4302  !(i_DeeSCCons == 178 && n1DeeSCEcna == 157) &&
4303  !(i_DeeSCCons == 207 && n1DeeSCEcna == 176) &&
4304  !(i_DeeSCCons == 207 && n1DeeSCEcna == 193) &&
4305  //.................................................... (D1,S3) , (D3,S7)
4306  !(i_DeeSCCons == 298 && n1DeeSCEcna == 188) &&
4307  //.................................................... (D1,S4) , (D3,S6)
4308  !(i_DeeSCCons == 261 && n1DeeSCEcna == 29) && // !(261a and 268a)
4309  !(i_DeeSCCons == 261 && n1DeeSCEcna == 144) &&
4310  !(i_DeeSCCons == 261 && n1DeeSCEcna == 165) &&
4311  !(i_DeeSCCons == 268 && n1DeeSCEcna == 102) &&
4312  !(i_DeeSCCons == 268 && n1DeeSCEcna == 123) &&
4313  //.................................................... (D1,S5) , (D3,S5)
4314  !(i_DeeSCCons == 281 && n1DeeSCEcna == 41)
4315  )
4316  {
4317  sprintf(f_in, "%d", i_DSSC);
4318  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in); // <=== DrawText: prend du temps
4319  sprintf(f_in, "%d", i_DeeSCCons);
4320  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in); // <=== DrawText: prend du temps
4321  }
4322 
4323  //.................................................... (D2,S9) , (D4,S1)
4324 
4325  if( i_DeeSCCons == 33 && n1DeeSCEcna == 60 )
4326  {
4327  sprintf(f_in, "30a");
4328  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4329  sprintf(f_in, "33a");
4330  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4331  }
4332  if( i_DeeSCCons == 33 && n1DeeSCEcna == 119 )
4333  {
4334  sprintf(f_in, "30b");
4335  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4336  sprintf(f_in, "33b");
4337  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4338  }
4339  //.................................................... (D2,S8) , (D4,S2)
4340  if( i_DeeSCCons == 29 && n1DeeSCEcna == 32 )
4341  {
4342  sprintf(f_in, " 3c-25c");
4343  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4344  sprintf(f_in, "29c-58c");
4345  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4346  }
4347  if( i_DeeSCCons == 29 && n1DeeSCEcna == 138 )
4348  {
4349  sprintf(f_in, "3a");
4350  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4351  sprintf(f_in, "29a");
4352  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4353  }
4354  if( i_DeeSCCons == 29 && n1DeeSCEcna == 157 )
4355  {
4356  sprintf(f_in, "3b");
4357  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4358  sprintf(f_in, "29b");
4359  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4360  }
4361 
4362  if( i_DeeSCCons == 58 && n1DeeSCEcna == 176 )
4363  {
4364  sprintf(f_in, "25a");
4365  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4366  sprintf(f_in, "58a");
4367  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4368  }
4369  if( i_DeeSCCons == 58 && n1DeeSCEcna == 193 )
4370  {
4371  sprintf(f_in, "25b");
4372  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4373  sprintf(f_in, "58b");
4374  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4375  }
4376  //.................................................... (D2,S7) , (D4,S3)
4377  if( i_DeeSCCons == 149 && n1DeeSCEcna == 188 )
4378  {
4379  sprintf(f_in, "34a");
4380  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4381  sprintf(f_in, "149a");
4382  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4383  }
4384  //.................................................... (D2,S6) , (D4,S4)
4385  if( i_DeeSCCons == 112 && n1DeeSCEcna == 29 )
4386  {
4387  sprintf(f_in, " 14a-21a");
4388  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4389  sprintf(f_in, "112a-119a");
4390  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4391  }
4392  if( i_DeeSCCons == 112 && n1DeeSCEcna == 144 )
4393  {
4394  sprintf(f_in, "14c");
4395  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4396  sprintf(f_in, "112c");
4397  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4398  }
4399  if( i_DeeSCCons == 112 && n1DeeSCEcna == 165 )
4400  {
4401  sprintf(f_in, "14b");
4402  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4403  sprintf(f_in, "112b");
4404  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4405  }
4406 
4407  if( i_DeeSCCons == 119 && n1DeeSCEcna == 102 )
4408  {
4409  sprintf(f_in, "21c");
4410  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4411  sprintf(f_in, "119c");
4412  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4413  }
4414  if( i_DeeSCCons == 119 && n1DeeSCEcna == 123 )
4415  {
4416  sprintf(f_in, "21b");
4417  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4418  sprintf(f_in, "119b");
4419  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4420  }
4421  //.................................................... (D2,S5) , (D4,S5)
4422  if( i_DeeSCCons == 132 && n1DeeSCEcna == 41 )
4423  {
4424  sprintf(f_in, "3a");
4425  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4426  sprintf(f_in, "132a");
4427  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4428  }
4429 
4430  //.................................................... (D1,S1) , (D3,S9)
4431  if( i_DeeSCCons == 182 && n1DeeSCEcna == 60 )
4432  {
4433  sprintf(f_in, "30a");
4434  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4435  sprintf(f_in, "182a");
4436  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4437  }
4438  if( i_DeeSCCons == 182 && n1DeeSCEcna == 119 )
4439  {
4440  sprintf(f_in, "30b");
4441  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4442  sprintf(f_in, "182b");
4443  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4444  }
4445  //.................................................... (D1,S2) , (D3,S8)
4446  if( i_DeeSCCons == 178 && n1DeeSCEcna == 32 )
4447  {
4448  sprintf(f_in, " 3c-25c");
4449  text_DSSC_num->DrawText(x_from_IX-6, y_from_IYp, f_in);
4450  sprintf(f_in, "178c-207c");
4451  text_DeeSCCons_num->DrawText(x_from_IX-6, y_from_IYm, f_in);
4452  }
4453  if( i_DeeSCCons == 178 && n1DeeSCEcna == 138 )
4454  {
4455  sprintf(f_in, "3a");
4456  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4457  sprintf(f_in, "178a");
4458  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4459  }
4460  if( i_DeeSCCons == 178 && n1DeeSCEcna == 157 )
4461  {
4462  sprintf(f_in, "3b");
4463  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4464  sprintf(f_in, "178b");
4465  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4466  }
4467 
4468  if( i_DeeSCCons == 207 && n1DeeSCEcna == 176 )
4469  {
4470  sprintf(f_in, "25a");
4471  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4472  sprintf(f_in, "207a");
4473  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4474  }
4475  if( i_DeeSCCons == 207 && n1DeeSCEcna == 193 )
4476  {
4477  sprintf(f_in, "25b");
4478  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4479  sprintf(f_in, "207b");
4480  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4481  }
4482  //.................................................... (D1,S3) , (D3,S7)
4483  if( i_DeeSCCons == 298 && n1DeeSCEcna == 188 )
4484  {
4485  sprintf(f_in, "34a");
4486  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4487  sprintf(f_in, "298a");
4488  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4489  }
4490  //.................................................... (D1,S4) , (D3,S6)
4491  if( i_DeeSCCons == 261 && n1DeeSCEcna == 29 )
4492  {
4493  sprintf(f_in, " 14a-21a");
4494  text_DSSC_num->DrawText(x_from_IX-6, y_from_IYp, f_in);
4495  sprintf(f_in, "261a-268a");
4496  text_DeeSCCons_num->DrawText(x_from_IX-6, y_from_IYm, f_in);
4497  }
4498  if( i_DeeSCCons == 261 && n1DeeSCEcna == 144 )
4499  {
4500  sprintf(f_in, "14c");
4501  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4502  sprintf(f_in, "261c");
4503  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4504  }
4505  if( i_DeeSCCons == 261 && n1DeeSCEcna == 165 )
4506  {
4507  sprintf(f_in, "14b");
4508  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4509  sprintf(f_in, "261b");
4510  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4511  }
4512 
4513  if( i_DeeSCCons == 268 && n1DeeSCEcna == 102 )
4514  {
4515  sprintf(f_in, "21c");
4516  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4517  sprintf(f_in, "268c");
4518  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4519  }
4520  if( i_DeeSCCons == 268 && n1DeeSCEcna == 123 )
4521  {
4522  sprintf(f_in, "21b");
4523  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4524  sprintf(f_in, "268b");
4525  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4526  }
4527  //.................................................... (D1,S5) , (D3,S5)
4528  if( i_DeeSCCons == 281 && n1DeeSCEcna == 41 )
4529  {
4530  sprintf(f_in, "20a");
4531  text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4532  sprintf(f_in, "281a");
4533  text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4534  }
4535  }
4536  }
4537 
4538  // delete text_DSSC_num; fCdeleteRoot++;
4539 
4540  //......................... mention "color, black"
4541  Color_t coul_textcolors = fCnaParHistos->ColorDefinition("noir");
4542  sprintf( f_in, "color: nb in Data Sector, black: nb for construction");
4543  Int_t x_colors = 3;
4544  Int_t y_colors = -14;
4545 
4546  TText *text_colors = new TText(x_colors, y_colors, f_in); fCnewRoot++;
4547  text_colors->SetTextSize(0.03);
4548  text_colors->SetTextColor(coul_textcolors);
4549  text_colors->Draw();
4550 
4551  delete [] f_in; f_in = 0; fCdelete++;
4552 
4553  Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
4554  gStyle->SetTextColor(couleur_noir);
4555 }
4556 //----------------> end of ViewDeeSCNumberingPad()
4557 
4558 void TEcnaHistos::ViewDeeGrid(const Int_t& DeeNumber, const TString& c_option)
4559 {
4560  //Grid of one Dee with axis IX and IY
4561 
4562  Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysIXInSC();
4563  Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysIYInSC();
4564 
4565  if ( c_option == "corcc")
4566  {
4567  GeoBidSizeIX = fEcal->MaxSCIXInDee()*fEcal->MaxCrysInSC();
4568  GeoBidSizeIY = fEcal->MaxSCIYInDee()*fEcal->MaxCrysInSC();
4569  }
4570 
4571  Int_t nb_binx = GeoBidSizeIX;
4572  Int_t nb_biny = GeoBidSizeIY;
4573  Axis_t xinf_bid = (Axis_t)0.;
4574  Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4575 
4576  Axis_t yinf_bid = (Axis_t)0.;
4577  Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4578  Double_t ymid_bid = (Double_t)(ysup_bid-yinf_bid)/2.;
4579 
4580  //---------------- trace de la grille: un rectangle = un super-cristal
4581 
4582  Int_t size_IX = fEcal->MaxCrysIXInSC();
4583  Int_t size_IY = fEcal->MaxCrysIYInSC();
4584 
4585  if ( c_option == "corcc"){size_IX = fEcal->MaxCrysInSC(); size_IY = fEcal->MaxCrysInSC();}
4586 
4587  Int_t max_x = nb_binx/size_IX;
4588  Int_t max_y = nb_biny/size_IY;
4589  Int_t max_yd = max_y/2;
4590 
4591  //= SURLIGNAGES (unite de coordonnees: le cristal ou 5 fois le cristal si option corcc)
4592  //........................... multplicative coefficient for corcc option
4593  Int_t coefcc_x = 1;
4594  Int_t coefcc_y = 1;
4595  if ( c_option == "corcc"){coefcc_x = fEcal->MaxCrysIXInSC(); coefcc_y = fEcal->MaxCrysIYInSC();}
4596 
4597  //............................. lignes horizontales
4598  Double_t yline = (Double_t)yinf_bid - (Double_t)size_IY;
4599 
4600  Double_t xline_beg = (Double_t)xinf_bid;
4601  Double_t xline_end = (Double_t)xsup_bid;
4602 
4603  // k = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
4604  Int_t x_min[11] = {11,11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
4605  Int_t x_max[11] = {50,50,47,45,45,42,37,35,30,15,50};
4606  for(Int_t i=0;i<11;i++){x_min[i] = coefcc_x*x_min[i]; x_max[i] = coefcc_x*x_max[i];}
4607 
4608  for( Int_t j = 0 ; j < max_y ; j++)
4609  {
4610  if( j < max_yd ) // j = 0,1,2,3,4,5,6,7,8,9
4611  {
4612  if( DeeNumber == 1 || DeeNumber == 3 )
4613  {
4614  xline_beg = xinf_bid + (Double_t)x_min[10-j];
4615  xline_end = xinf_bid + (Double_t)x_max[10-j];
4616  }
4617  if( DeeNumber == 2 || DeeNumber == 4 )
4618  {
4619  xline_beg = xsup_bid - (Double_t)x_max[10-j];
4620  xline_end = xsup_bid - (Double_t)x_min[10-j];
4621  }
4622  }
4623 
4624  if( j == max_yd ) // j = 10
4625  {
4626  if( DeeNumber == 1 || DeeNumber == 3 )
4627  {
4628  xline_beg = xinf_bid + (Double_t)x_min[0];
4629  xline_end = xinf_bid + (Double_t)x_max[0];
4630  }
4631  if( DeeNumber == 2 || DeeNumber == 4 )
4632  {
4633  xline_beg = xsup_bid - (Double_t)x_max[0];
4634  xline_end = xsup_bid - (Double_t)x_min[0];
4635  }
4636  }
4637 
4638  if( j > max_yd ) // j = 11,12,13,14,15,16,17,18,19,20
4639  {
4640  if( DeeNumber == 1 || DeeNumber == 3 )
4641  {
4642  xline_beg = xinf_bid + (Double_t)x_min[j-10];
4643  xline_end = xinf_bid + (Double_t)x_max[j-10];
4644  }
4645  if( DeeNumber == 2 || DeeNumber == 4 )
4646  {
4647  xline_beg = xsup_bid - (Double_t)x_max[j-10];
4648  xline_end = xsup_bid - (Double_t)x_min[j-10];
4649  }
4650  }
4651 
4652  yline = yline + (Double_t)size_IY;
4653  TLine *lin;
4654  lin = new TLine(xline_beg, yline, xline_end, yline); fCnewRoot++;
4655  lin->Draw();
4656  //lin->Delete(); // => si on delete, pas de trace de la ligne
4657  // delete lin; fCdeleteRoot++;
4658  }
4659 
4660  //.......................... lignes verticales
4661  Double_t xline = (Double_t)xinf_bid - (Double_t)size_IX;
4662 
4663  Double_t yline_haut_bot = (Double_t)ymid_bid;
4664  Double_t yline_haut_top = (Double_t)ysup_bid;
4665 
4666  Double_t yline_bas_bot = (Double_t)yinf_bid;
4667  Double_t yline_bas_top = (Double_t)ymid_bid;
4668 
4669  // coordonnees demi-lignes
4670  // l = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10
4671  Int_t y_min[11] = { 0,11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
4672  Int_t y_max[11] = {50,50,47,45,45,42,38,35,30,15,10};
4673  for(Int_t i=0;i<11;i++){y_min[i] = coefcc_y*y_min[i]; y_max[i] = coefcc_y*y_max[i];}
4674 
4675  gStyle->SetTextSize(0.075); // ===> pourquoi pas avant?
4676 
4677  for( Int_t i = 0 ; i <= max_x ; i++)
4678  {
4679  if( DeeNumber == 1 || DeeNumber == 3 )
4680  {
4681  yline_haut_bot = ymid_bid + (Double_t)y_min[i];
4682  yline_haut_top = ymid_bid + (Double_t)y_max[i];
4683  }
4684  if( DeeNumber == 2 || DeeNumber == 4 )
4685  {
4686  yline_haut_bot = ymid_bid + (Double_t)y_min[10-i];
4687  yline_haut_top = ymid_bid + (Double_t)y_max[10-i];
4688  }
4689  yline_bas_bot = ysup_bid - yline_haut_top;
4690  yline_bas_top = ysup_bid - yline_haut_bot;
4691 
4692  xline = xline + (Double_t)size_IX;
4693  TLine *lin_haut;
4694  lin_haut = new TLine(xline, yline_haut_bot, xline, yline_haut_top); fCnewRoot++;
4695  lin_haut->Draw();
4696  // delete lin_haut; fCdeleteRoot++;
4697  TLine *lin_bas;
4698  lin_bas = new TLine(xline, yline_bas_bot, xline, yline_bas_top); fCnewRoot++;
4699  lin_bas->Draw();
4700  // delete lin_bas; fCdeleteRoot++;
4701  }
4702 
4703  EEDataSectors(coefcc_x, coefcc_y, DeeNumber, "Dee");
4704  EEGridAxis(coefcc_x, coefcc_y, DeeNumber, "Dee", c_option);
4705 
4706 } // end of ViewDeeGrid
4707 
4708 //=================================================================================
4709 //
4710 // SqrtContourLevels(const Int_t& nb_niv, Double_t* cont_niv)
4711 //
4712 //=================================================================================
4713 void TEcnaHistos::SqrtContourLevels(const Int_t& nb_niv, Double_t* cont_niv)
4714 {
4715 //Calculation of levels in z coordinate for 3D plots. Square root scale
4716 
4717  Int_t nb_niv2 = (nb_niv+1)/2;
4718 
4719  for (Int_t num_niv = 0; num_niv < nb_niv2; num_niv++)
4720  {
4721  Int_t ind_niv = num_niv + nb_niv2 - 1;
4722  if ( ind_niv < 0 || ind_niv > nb_niv )
4723  {
4724  cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
4725  << "wrong contour levels for correlation matrix"
4726  << fTTBELL << endl;
4727  }
4728  else
4729  {
4730  cont_niv[ind_niv] =
4731  (Double_t)(num_niv*num_niv)/
4732  ((Double_t)((nb_niv2-1)*(nb_niv2-1)));
4733  }
4734  }
4735  for (Int_t num_niv = -1; num_niv > -nb_niv2; num_niv--)
4736  {
4737  Int_t ind_niv = num_niv + nb_niv2 - 1;
4738  if ( ind_niv < 0 || ind_niv > nb_niv )
4739  {
4740  cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
4741  << "wrong contour levels for correlation matrix"
4742  << fTTBELL << endl;
4743  }
4744  else
4745  {
4746  cont_niv[ind_niv] =
4747  -(Double_t)(num_niv*num_niv)/
4748  ((Double_t)((nb_niv2-1)*(nb_niv2-1)));
4749  }
4750  }
4751 }
4752 
4753 //==========================================================================
4754 //
4755 // GetHocoVecoAxisTitle
4756 //
4757 //==========================================================================
4758 TString TEcnaHistos::GetHocoVecoAxisTitle(const TString& chcode)
4759 {
4760  TString xname = " ";
4761 
4762  if ( fFlagSubDet == "EB" ){xname = GetEtaPhiAxisTitle(chcode);}
4763  if ( fFlagSubDet == "EE" ){xname = GetIXIYAxisTitle(chcode);}
4764 
4765  return xname;
4766 }
4767 
4768 TString TEcnaHistos::GetEtaPhiAxisTitle(const TString& chcode)
4769 {
4770  TString xname = " ";
4771 
4772  if ( chcode == "ietaEB" ){xname = "i#eta Xtal ";}
4773  if ( chcode == "ietaSM" ){xname = "i#eta Xtal ";}
4774  if ( chcode == "ietaTow"){xname = "i#eta Xtal ";}
4775 
4776  if ( chcode == "iphiEB" ){xname = " i#varphi Xtal";}
4777  if ( chcode == "jphiEB+" ){xname = " i#varphi Xtal";}
4778  if ( chcode == "jphiEB-" ){xname = " i#varphi Xtal";}
4779  if ( chcode == "jphiSMB+" ){xname = " i#varphi Xtal";}
4780  if ( chcode == "jphiSMB-" ){xname = "i#varphi Xtal ";}
4781  if ( chcode == "jphiTow" ){xname = "i#varphi Xtal in SM ";}
4782  if ( chcode == "phi" ){xname = "i#varphi Xtal in EB ";}
4783 
4784  return xname;
4785 }
4786 
4787 TString TEcnaHistos::GetIXIYAxisTitle(const TString& chcode)
4788 {
4789  TString xname = " ";
4790 
4791  if ( chcode == "iIXDee" ){xname = "IX(SC)";}
4792 
4793  if ( chcode == "iIXDee1" ){xname = " -IX Xtal";}
4794  if ( chcode == "iIXDee2" ){xname = " IX Xtal ";}
4795  if ( chcode == "iIXDee3" ){xname = " IX Xtal";}
4796  if ( chcode == "iIXDee4" ){xname = "-IX Xtal ";}
4797 
4798  if ( chcode == "iIXEE" ){xname = " IX Xtal";}
4799 
4800  if ( chcode == "iIXSC" ){xname = "IX Xtal";}
4801 
4802  if ( chcode == "jIYDee" ){xname = "IY Xtal";}
4803  if ( chcode == "jIYSC" ){xname = "IY Xtal";}
4804  if ( chcode == "IY" ){xname = "IY";}
4805 
4806  return xname;
4807 }
4808 
4809 //=======================================================================================
4810 //
4811 // ViewStas(***)
4812 //
4813 // (Hoco,Veco) matrices for all the Stex's of a Stas
4814 // Stas = EB or EE
4815 //
4816 //=======================================================================================
4817 void TEcnaHistos::ViewStas(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
4818  const TString& HistoCode)
4819 {
4820 // (Hoco, Veco) matrices for all the Stex's of a Stas
4821 
4822  //......................... matrix title
4823  char* f_in_mat_tit = new char[fgMaxCar]; fCnew++;
4824 
4825  if (HistoCode == "D_NOE_ChNb"){sprintf(f_in_mat_tit, "Number of Events");}
4826  if (HistoCode == "D_Ped_ChNb"){sprintf(f_in_mat_tit, "Pedestals");}
4827  if (HistoCode == "D_TNo_ChNb"){sprintf(f_in_mat_tit, "Total noise");}
4828  if (HistoCode == "D_MCs_ChNb"){sprintf(f_in_mat_tit, "Mean cor(s,s')");}
4829  if (HistoCode == "D_LFN_ChNb"){sprintf(f_in_mat_tit, "Low frequency noise");}
4830  if (HistoCode == "D_HFN_ChNb"){sprintf(f_in_mat_tit, "High frequency noise");}
4831  if (HistoCode == "D_SCs_ChNb"){sprintf(f_in_mat_tit, "Sigma of cor(s,s')");}
4832 
4833  //.... Axis parameters: *** WARNING *** EB ===> x (Bid Hoco) = phi (StinVeco), y (Bid Veco) = eta (StinHoco)
4834  Int_t GeoBidSizeHoco = fEcal->MaxStinVecoInStas();
4835  Int_t GeoBidSizeVeco = fEcal->MaxStinHocoInStas();
4836 
4837  Int_t vertic_empty_strips = 3;
4838  Int_t vertic_empty_strip_1 = 1;
4839 
4840  if ( fFlagSubDet == "EE" )
4841  {
4842  // for empty vertical strips: before EE-, between EE- and EE+, after EE+ on plot
4843  GeoBidSizeHoco = fEcal->MaxStinHocoInStas() + vertic_empty_strips;
4844  GeoBidSizeVeco = fEcal->MaxStinVecoInStas();
4845  }
4846 
4847  Int_t nb_binx = GeoBidSizeHoco;
4848  Int_t nb_biny = GeoBidSizeVeco;
4849  Axis_t xinf_bid = (Axis_t)0.;
4850  Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
4851  Axis_t yinf_bid = (Axis_t)0.;
4852  Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
4853 
4854  TString axis_x_var_name = " #Hoco ";
4855  TString axis_y_var_name = " #varVeco ";
4856 
4857  //............. matrices reading and histogram filling (ViewStas)
4858 
4859  TH2D* h_geo_bid = new TH2D("geobidim_ViewStas", f_in_mat_tit,
4860  nb_binx, xinf_bid, xsup_bid,
4861  nb_biny, yinf_bid, ysup_bid); fCnewRoot++;
4862  h_geo_bid->Reset();
4863 
4864  Int_t CounterExistingFile = 0;
4865  Int_t CounterDataExist = 0;
4866 
4867  Int_t* xFapNbOfEvts = new Int_t[fEcal->MaxStexInStas()]; fCnew++;
4868  for(Int_t i=0; i<fEcal->MaxStexInStas(); i++){xFapNbOfEvts[i]=0;}
4869 
4870  //Int_t* NOFE_int = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
4871 
4872  //......................................................................... (ViewStas)
4873  for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
4874  {
4875  TVectorD partial_histp(fEcal->MaxStinEcnaInStex());
4876  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){partial_histp(i)=(Double_t)0.;}
4877 
4878  Bool_t OKFileExists = kFALSE;
4879  Bool_t OKDataExist = kFALSE;
4880 
4881  if( arg_AlreadyRead == fTobeRead )
4882  {
4884  Int_t n1StasStex = iStasStex+1;
4888  n1StasStex, fCfgResultsRootFilePath.Data());
4889 
4890  if ( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewStas)
4891 
4892  if( OKFileExists == kTRUE )
4893  {
4894  xFapNbOfEvts[iStasStex] = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, n1StasStex);
4895  TString fp_name_short = fMyRootFile->GetRootFileNameShort();
4896  // cout << "*TEcnaHistos::ViewStas(...)> Data are analyzed from file ----> "
4897  // << fp_name_short << endl;
4898 
4899  //....................... search for first and last dates
4900  if( iStasStex == 0 )
4901  {
4906  }
4907 
4908  time_t xStartTime = fMyRootFile->GetStartTime();
4909  time_t xStopTime = fMyRootFile->GetStopTime();
4910  TString xStartDate = fMyRootFile->GetStartDate();
4911  TString xStopDate = fMyRootFile->GetStopDate();
4912 
4913  if( xStartTime < fStartTime ){fStartTime = xStartTime; fStartDate = xStartDate;}
4914  if( xStopTime > fStopTime ){fStopTime = xStopTime; fStopDate = xStopDate;}
4915 
4917 
4918  //----------------------------------------------------------------------------- file reading (ViewStas)
4919  if( HistoCode == "D_NOE_ChNb" ){
4921  if( HistoCode == "D_Ped_ChNb" ){
4923  if (HistoCode == "D_TNo_ChNb" ){
4925  if( HistoCode == "D_MCs_ChNb" ){
4927  if( HistoCode == "D_LFN_ChNb" ){
4929  if( HistoCode == "D_HFN_ChNb" ){
4931  if( HistoCode == "D_SCs_ChNb" ){
4933 
4934  if ( fMyRootFile->DataExist() == kTRUE ){OKDataExist = kTRUE;}
4935  }
4936  else
4937  {
4938  fStatusFileFound = kFALSE;
4939  cout << "!TEcnaHistos::ViewStas(...)> *ERROR* =====> "
4940  << " ROOT file not found" << fTTBELL << endl;
4941  }
4942  }
4943 
4944  if( arg_AlreadyRead == 1 )
4945  {
4946  OKDataExist = kTRUE;
4947  for(Int_t i0Stin=0; i0Stin<fEcal->MaxStinEcnaInStex(); i0Stin++)
4948  {
4949  partial_histp(i0Stin) = arg_read_histo(fEcal->MaxStinEcnaInStex()*iStasStex+i0Stin);
4950  }
4951  }
4952 
4953  if( OKDataExist == kTRUE)
4954  {
4955  fStatusFileFound = kTRUE;
4956  CounterExistingFile++;
4957 
4958  //................................................................. (ViewStas)
4959  TMatrixD read_matrix(nb_binx, nb_biny);
4960  for(Int_t i=0; i<nb_binx; i++)
4961  {for(Int_t j=0; j<nb_biny; j++){read_matrix(i,j)=(Double_t)0.;}}
4962 
4963  if ( OKDataExist == kTRUE )
4964  {
4965  fStatusDataExist = kTRUE;
4966  CounterDataExist++;
4967 
4968  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
4969  {
4970  //-------------------------------------- Geographical bidim filling (ViewStas)
4971  Int_t i_xgeo = GetXStinInStas(iStasStex, i0StexStinEcna, vertic_empty_strip_1);
4972  Int_t i_ygeo = GetYStinInStas(iStasStex, i0StexStinEcna);
4973 
4974  if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
4975  {
4976  Int_t n1StexStinEcna = i0StexStinEcna+1;
4977 
4978  if( fFlagSubDet == "EB" )
4979  {
4980  read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
4981  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4982  (Double_t)read_matrix(i_xgeo, i_ygeo));
4983  }
4984 
4985  if( fFlagSubDet == "EE" )
4986  {
4987  //---------------------> do not draw bin for SCEcna = 10 or 11 (ViewStas)
4988  if( !( (n1StexStinEcna == 10 || n1StexStinEcna == 11 ||
4989  n1StexStinEcna == 29 || n1StexStinEcna == 32) ) )
4990  {
4991  read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
4992  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
4993  (Double_t)read_matrix(i_xgeo, i_ygeo));
4994  }
4995  if( n1StexStinEcna == 29 )
4996  {
4997  //----------------------------------------------------------------- (ViewStas)
4998  // Average on SCEcna 29 (x1+x2+x3+x6+x7) and SCEcna 10: (x11)
4999  // (x = Xtal# in SC; see CMS NOTE 2006/027, p.10)
5000  //
5001  // (x1+x2+x3+x6+x7)/5 = partial_histp(29-1) ; x11 = partial_histp(10-1)
5002  //
5003  // => (x1+x2+x3+x6+x7+x11)/6 = partial_histp(29-1)*5/6 + partial_histp(10-1)/6
5004  //
5005  // // except for "D_NOE_ChNb" because average done in ReadAverageNumberOfEvents
5006  // // (no averaged NbOfEvts in root file)
5007  //---------------------------------------------------------------------------------
5008  read_matrix(i_xgeo, i_ygeo) =
5009  partial_histp(i0StexStinEcna)*(Double_t)(5./6.) + partial_histp(9)/(Double_t)6.;
5010  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
5011  (Double_t)read_matrix(i_xgeo, i_ygeo));
5012  }
5013  //if( n1StexStinEcna == 32 && HistoCode != "D_NOE_ChNb" ) (ViewStas)
5014  if( n1StexStinEcna == 32 )
5015  {
5016  //---- same as previous case: replace SCEcna 29 by 32 AND SCEcna 10 by 11
5017  //----> (x1+x2+x3+x6+x7+x11)/6 = partial_histp(32-1)*5/6 + partial_histp(11-1)/6
5018  read_matrix(i_xgeo, i_ygeo) =
5019  partial_histp(i0StexStinEcna)*(Double_t)(5./6.) + partial_histp(10)/(Double_t)6.;
5020  h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo,
5021  (Double_t)read_matrix(i_xgeo, i_ygeo));
5022  }
5023  } // end of if( fFlagSubDet == "EE" )
5024  } // end of if(i_xgeo >=0 && i_xgeo < nb_binx && i_ygeo >=0 && i_ygeo < nb_biny)
5025  } // end of for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
5026  } // end of if ( fMyRootFile->DataExist() == kTRUE )
5027  else
5028  {
5029  fStatusDataExist = kFALSE;
5030 
5031  cout << "!TEcnaHistos::ViewStas(...)> "
5032  << " Data not available for " << fFapStexName << " " << iStasStex+1
5033  << " (Quantity not present in the ROOT file)" << fTTBELL << endl;
5034  }
5035  } // end of if( fMyRootFile->LookAtRootFile() == kTRUE ) (ViewStas)
5036  else
5037  {
5038  fStatusFileFound = kFALSE;
5039 
5040  cout << "!TEcnaHistos::ViewStas(...)> "
5041  << " Data not available for " << fFapStexName << " " << iStasStex+1
5042  << " (ROOT file not found)" << fTTBELL << endl;
5043  }
5044 
5045  if( fFapNbOfEvts <= xFapNbOfEvts[iStasStex] ){fFapNbOfEvts = xFapNbOfEvts[iStasStex];}
5046 
5047  } // end of for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
5048 
5049  //delete [] NOFE_int; NOFE_int = 0; fCdelete++;
5050  delete [] xFapNbOfEvts; xFapNbOfEvts = 0; fCdelete++;
5051 
5052  if( CounterExistingFile > 0 && CounterDataExist > 0 )
5053  {
5054  //=============== H I S T O M I N / M A X M A N A G E M E N T ============ (ViewStas)
5055  //................................ Put histo min max values
5056  //.......... default if flag not set to "ON"
5057  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
5058  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
5059 
5060  if( fUserHistoMin == fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
5061  //.......... user's value if flag set to "ON"
5062  if( fFlagUserHistoMin == "ON" )
5063  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
5064  if( fFlagUserHistoMax == "ON" )
5065  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
5066  //................................. automatic min and/or max
5067  if( fFlagUserHistoMin == "AUTO" )
5068  {SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum()); fFlagUserHistoMin = "OFF";}
5069  if( fFlagUserHistoMax == "AUTO" )
5070  {SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum()); fFlagUserHistoMax = "OFF";}
5071  //...................................... histo set ymin and ymax
5072  SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
5073 
5074  // ************************** A GARDER EN RESERVE *******************************
5075  //............. special contour level for correlations (square root wise scale)
5076  //if ( HistoCode == "D_MCs_ChNb" )
5077  //{
5078  // Int_t nb_niv = 9;
5079  // Double_t* cont_niv = new Double_t[nb_niv]; fCnew++;
5080  // SqrtContourLevels(nb_niv, &cont_niv[0]);
5081  // h_geo_bid->SetContour(nb_niv, &cont_niv[0]);
5082  // delete [] cont_niv; fCdelete++;
5083  //}
5084  // ******************************** (FIN RESERVE) *******************************
5085 
5086  // =================================== P L O T S ======================== (ViewStas)
5087 
5088  char* f_in = new char[fgMaxCar]; fCnew++;
5089 
5090  //...................... Taille/format canvas
5091  UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
5092  UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
5093 
5094  if( fFlagSubDet == "EB")
5095  {canv_w = fCnaParHistos->CanvasFormatW("phietaEB");
5096  canv_h = fCnaParHistos->CanvasFormatH("phietaEB");}
5097  if( fFlagSubDet == "EE")
5098  {canv_w = fCnaParHistos->CanvasFormatW("IYIXEE");
5099  canv_h = fCnaParHistos->CanvasFormatH("IYIXEE");}
5100 
5101  //............................................... paves commentaires (ViewStas)
5103 
5104  //------------------------------------ Canvas name ----------------- (ViewStas)
5105  TString name_cov_cor;
5106  Int_t MaxCar = fgMaxCar;
5107  name_cov_cor.Resize(MaxCar);
5108  name_cov_cor = "?";
5109 
5110  if( HistoCode == "D_NOE_ChNb"){name_cov_cor = "Number_of_Events";}
5111  if( HistoCode == "D_Ped_ChNb"){name_cov_cor = "Pedestals";}
5112  if( HistoCode == "D_TNo_ChNb"){name_cov_cor = "Total_noise";}
5113  if( HistoCode == "D_MCs_ChNb"){name_cov_cor = "Mean_Corss";}
5114  if( HistoCode == "D_LFN_ChNb"){name_cov_cor = "Low_Fq_Noise";}
5115  if( HistoCode == "D_HFN_ChNb"){name_cov_cor = "High_Fq_Noise";}
5116  if( HistoCode == "D_SCs_ChNb"){name_cov_cor = "Sigma_Corss";}
5117 
5118  TString name_visu;
5119  MaxCar = fgMaxCar;
5120  name_visu.Resize(MaxCar);
5121  name_visu = "colz";
5122 
5123  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%s_%s_HocoVeco_R%d",
5124  name_cov_cor.Data(), fFapAnaType.Data(), fFapNbOfSamples, fFapRunNumber,
5126  name_visu.Data(), arg_AlreadyRead);
5127 
5128  if( fFlagSubDet == "EB" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEB");}
5129  if( fFlagSubDet == "EE" ){SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEE");}
5130 
5131  TCanvas *MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h); fCnewRoot++;
5132  fCurrentCanvas = MainCanvas; fCurrentCanvasName = f_in;
5133 
5134  // cout << "*TEcnaHistos::ViewStas(...)> Plot is displayed on canvas ----> " << f_in << endl;
5135 
5136  delete [] f_in; f_in = 0; fCdelete++;
5137 
5138  //------------------------ Canvas draw and update ------------ (ViewStas)
5139  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
5140 
5141  fPavComStas->Draw();
5142  fPavComAnaRun->Draw();
5143  fPavComNbOfEvts->Draw();
5144 
5145  //----------------------------------------------------------- pad margins
5146  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
5147  Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
5148  Double_t x_margin = x_low;
5149  Double_t y_margin = y_low;
5150  MainCanvas->Divide( 1, 1, x_margin, y_margin);
5151  // Divide(nx, ny, x_margin, y_margin, color);
5152  gPad->cd(1);
5153  //........................... specific EE
5154  if( fFlagSubDet == "EE" ){
5155  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
5156  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_EE") - 0.005;
5157  TVirtualPad* main_subpad = gPad;
5158  main_subpad->SetPad(x_low, y_low, x_up, y_up);}
5159 
5160  //------------------------------------------------------------
5161  h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
5162  h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
5163 
5164  h_geo_bid->DrawCopy("COLZ");
5165 
5166  // trace de la grille ---------------- (ViewStas)
5167  ViewStasGrid(vertic_empty_strips);
5168  gPad->Draw();
5169  gPad->Update();
5170 
5171  // delete MainCanvas; fCdeleteRoot++;
5172  }
5173  //..................... retour aux options standard
5174 
5175  Bool_t b_true = 1;
5176  h_geo_bid->SetStats(b_true);
5177  h_geo_bid->Delete(); h_geo_bid = 0; fCdeleteRoot++;
5178 
5179  delete [] f_in_mat_tit; f_in_mat_tit = 0; fCdelete++;
5180 
5181 } // end of ViewStas(...)
5182 
5183 //==================================================================================
5184 //
5185 // GetXStinInStas , GetYStinInStas
5186 //
5187 //==================================================================================
5188 Int_t TEcnaHistos::GetXStinInStas(const Int_t& iStasStex, const Int_t& StexStinEcna,
5189  const Int_t& vertic_empty_strip_1)
5190 {
5191 //Gives the X Stin coordinate in the geographic view of the Stas
5192 // (X = 0 to MaxStexHocoInStas*MaxStinHocoInStex - 1 + vertic_empty_strips(EE only))
5193 
5194  Int_t ix_geo = 0;
5195  Int_t n1StasStex = iStasStex+1;
5196  TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5197 
5198  if( fFlagSubDet == "EB")
5199  {
5200  if( ctype == "EB-")
5201  {
5202  ix_geo = (iStasStex - fEcal->MaxStexInStasMinus())*fEcal->MaxStinVecoInStex()
5203  + StexStinEcna%fEcal->MaxStinVecoInStex();
5204  }
5205  if( ctype == "EB+")
5206  {
5207  ix_geo = iStasStex*fEcal->MaxStinVecoInStex()
5208  + fEcal->MaxStinVecoInStex()- 1 - StexStinEcna%fEcal->MaxStinVecoInStex();
5209  }
5210  }
5211 
5212  if( fFlagSubDet == "EE")
5213  {
5214  TString LeftRightFromIP = fEcalNumbering->GetDeeDirViewedFromIP(n1StasStex);
5215 
5216  if( ctype == "EE-" && LeftRightFromIP == "left" )
5217  {
5218  ix_geo = fEcal->MaxStinHocoInStex() - StexStinEcna/fEcal->MaxStinVecoInStex() - 1 + vertic_empty_strip_1;
5219  }
5220  if( ctype == "EE-" && LeftRightFromIP == "right" )
5221  {
5222  ix_geo = fEcal->MaxStinHocoInStex() + StexStinEcna/fEcal->MaxStinVecoInStex() + vertic_empty_strip_1;
5223  }
5224  if( ctype == "EE+" && LeftRightFromIP == "left" )
5225  {
5226  ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex)
5227  + fEcal->MaxStinHocoInStex() - StexStinEcna/fEcal->MaxStinVecoInStex() - 1;
5228  }
5229  if( ctype == "EE+" && LeftRightFromIP == "right" )
5230  {
5231  ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex)
5232  + StexStinEcna/fEcal->MaxStinVecoInStex();
5233  }
5234  }
5235  return ix_geo;
5236 }
5237 
5238 Int_t TEcnaHistos::GetYStinInStas(const Int_t& iStasStex, const Int_t& StexStinEcna)
5239 {
5240 //Gives the Y crystal coordinate in the geographic view of one Stex
5241 // (Y = 0 to MaxStexVecoInStas*MaxStinVecoInStex - 1)
5242 
5243  Int_t iy_geo = 0;
5244 
5245  if( fFlagSubDet == "EB")
5246  {
5247  Int_t n1StasStex = iStasStex+1;
5248  TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5249  if( ctype == "EB+")
5250  {iy_geo = StexStinEcna/fEcal->MaxStinVecoInStex() + fEcal->MaxStinHocoInStex(); }
5251  if( ctype == "EB-")
5252  {iy_geo = fEcal->MaxStinHocoInStex() - 1 - StexStinEcna/fEcal->MaxStinVecoInStex();}
5253  }
5254 
5255  if( fFlagSubDet == "EE")
5256  {iy_geo = StexStinEcna%fEcal->MaxStinVecoInStex();}
5257  return iy_geo;
5258 }
5259 
5260 //==========================================================================
5261 //
5262 // ViewStasGrid
5263 // independent of the ROOT file
5264 //
5265 //==========================================================================
5266 void TEcnaHistos::ViewStasGrid(const Int_t & vertic_empty_strips)
5267 {
5268  //Grid of Stas with axis Hoco and Veco
5269 
5270  if( fFlagSubDet == "EB"){ViewEBGrid();}
5271  if( fFlagSubDet == "EE"){ViewEEGrid(vertic_empty_strips);}
5272 
5273 } // end of ViewStasGrid
5274 
5276 {
5277  //Grid of EB with axis Hoco and Veco
5278 
5279  Int_t GeoBidSizeEta = fEcal->MaxSMEtaInEB()*fEcal->MaxTowEtaInSM();
5280  Int_t GeoBidSizePhi = fEcal->MaxSMPhiInEB()*fEcal->MaxTowPhiInSM();
5281 
5282  Int_t size_y = fEcal->MaxTowEtaInSM();
5283  Int_t size_x = fEcal->MaxTowPhiInSM();
5284 
5285  Int_t nb_binx = GeoBidSizePhi;
5286  Int_t nb_biny = GeoBidSizeEta;
5287  Axis_t xinf_bid = (Axis_t)0.;
5288  Axis_t xsup_bid = (Axis_t)nb_binx;
5289  Axis_t yinf_bid = (Axis_t)0.;
5290  Axis_t ysup_bid = (Axis_t)nb_biny;
5291 
5292  //---------------- trace de la grille: un rectangle = un SM
5293 
5294  Int_t max_x = nb_binx/size_x; // = fEcal->MaxSMPhiInEB()
5295  Int_t max_y = nb_biny/size_y; // = fEcal->MaxSMEtaInEB()
5296 
5297  //............................. lignes horizontales (ViewEBGrid)
5298  Double_t yline = (Double_t)yinf_bid;
5299 
5300  Double_t xline_left = (Double_t)xinf_bid;
5301  Double_t xline_right = (Double_t)xsup_bid;
5302 
5303  for( Int_t j = 0 ; j < max_y ; j++)
5304  {
5305  yline = yline + (Double_t)size_y;
5306  TLine *lin;
5307  lin = new TLine(xline_left, yline, xline_right, yline); fCnewRoot++;
5308  lin->Draw();
5309  // delete lin; fCdeleteRoot++;
5310  }
5311 
5312  //-------------------------------- lignes verticales
5313  Double_t xline = (Double_t)xinf_bid - (Double_t)size_x;
5314 
5315  Double_t yline_bot = (Double_t)yinf_bid;
5316  Double_t yline_top = (Double_t)ysup_bid;
5317 
5318  for( Int_t i = 0 ; i < max_x ; i++)
5319  {
5320  xline = xline + (Double_t)size_x;
5321  TLine *lin;
5322  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5323  lin->Draw();
5324  }
5325 
5326  //-------------------------------- Numeros des SM
5327  Double_t yTextBot = yline_bot - (yline_top - yline_bot)/25.;
5328  Double_t yTextTop = yline_top + (yline_top - yline_bot)/120.;
5329  xline = (Double_t)xinf_bid - (Double_t)size_x;
5330 
5331  char* f_in = new char[fgMaxCar]; fCnew++;
5332  TText *text_SM = new TText(); fCnewRoot++;
5333  for( Int_t i = 0 ; i < max_x ; i++)
5334  {
5335  xline = xline + (Double_t)size_x;
5336  text_SM->SetTextColor(fCnaParHistos->ColorDefinition("bleu_fonce"));
5337  text_SM->SetTextSize((Double_t)0.03);
5338  sprintf( f_in, " +%d", i+1 );
5339  text_SM->DrawText(xline, yTextTop, f_in);
5340  sprintf( f_in, " %d", -i-1 );
5341  text_SM->DrawText(xline, yTextBot, f_in);
5342  }
5343  delete [] f_in; fCdelete++;
5344 
5345  //------------------ trace axes en eta et phi --------------- ViewEBGrid
5346 
5347  Int_t SMNumber = 1;
5348 
5349  //...................................................... Axe i(phi) (bottom x) ViewEBGrid
5350  Int_t MatSize = fEcal->MaxTowPhiInSM();
5351  Int_t size_x_eb = fEcal->MaxSMPhiInEB();
5352  Double_t phi_min = 0;
5353  Double_t phi_max = 360;
5354 
5355  TString x_var_name = GetHocoVecoAxisTitle("iphiEB");;
5356  TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
5357 
5358  new TF1("f1", x_direction.Data(), phi_min, phi_max); fCnewRoot++;
5359  TGaxis* sup_axis_x = 0;
5360 
5361  if( x_direction == "-x" ) // NEVER IN THIS CASE: xmin->xmax <=> right->left ("-x") direction
5362  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_x_eb*MatSize), (Float_t)0.,
5363  "f1", size_x_eb, "SC" , 0.); fCnewRoot++;}
5364 
5365  if( x_direction == "x" ) // ALWAYS IN THIS CASE: xmin->xmax <=> left->right ("x") direction
5366  {sup_axis_x = new TGaxis( (Float_t)0., (Float_t)0., (Float_t)(size_x_eb*MatSize), (Float_t)0.,
5367  "f1", size_x_eb, "SC" , 0.); fCnewRoot++;}
5368 
5369  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
5370  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("EBx");
5371  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
5372  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("EBx");
5373  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("EBx");
5374 
5375  sup_axis_x->SetTitle(x_var_name);
5376  sup_axis_x->SetTitleSize(tit_siz_x);
5377  sup_axis_x->SetTitleOffset(tit_off_x);
5378  sup_axis_x->SetLabelSize(lab_siz_x);
5379  sup_axis_x->SetLabelOffset(lab_off_x);
5380  sup_axis_x->SetTickSize(tic_siz_x);
5381  sup_axis_x->Draw("SAME");
5382 
5383  //...................................................... Axe eta (y) ViewEBGrid
5384  MatSize = fEcal->MaxTowEtaInSM();
5385  Int_t size_y_eb = fEcal->MaxSMEtaInEB();
5386 
5387  Double_t eta_min = (Double_t)(-85.);
5388  Double_t eta_max = (Double_t)85.;
5389 
5390  TString y_var_name = GetHocoVecoAxisTitle("ietaEB");
5391 
5392  TGaxis* sup_axis_y = 0;
5393  sup_axis_y = new TGaxis((Float_t)0., (Float_t)0.,
5394  (Float_t)0., (Float_t)(size_y_eb*MatSize),
5395  eta_min, eta_max, MatSize/2, "SC", 0.); fCnewRoot++;
5396 
5397  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5398  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("EBy");
5399  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
5400  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("EBy");
5401  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("EBy");
5402 
5403  sup_axis_y->SetTitle(y_var_name);
5404  sup_axis_y->SetTitleSize(tit_siz_y);
5405  sup_axis_y->SetTitleOffset(tit_off_y);
5406  sup_axis_y->SetLabelColor(1);
5407  sup_axis_y->SetLabelSize(lab_siz_y);
5408  sup_axis_y->SetLabelOffset(lab_off_y);
5409  sup_axis_y->SetTickSize(tic_siz_y);
5410  sup_axis_y->Draw("SAME");
5411 
5412  //f2 = 0;
5413 
5414  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
5415 
5416 } // end of ViewEBGrid
5417 //---------------------------------------------------------------------
5418 void TEcnaHistos::ViewEEGrid(const Int_t& vertic_empty_strips)
5419 {
5420  //Grid of EE with axis Hoco and Veco
5421 
5422  Float_t coefcc_x = (Float_t)1./(Float_t)5.;
5423  Float_t coefcc_y = (Float_t)1./(Float_t)5.;
5424 
5425  for( Int_t DeeNumber = 1; DeeNumber <= 4; DeeNumber++)
5426  {
5427  EEDataSectors(coefcc_x, coefcc_y, DeeNumber, "EE");
5428  EEGridAxis(coefcc_x, coefcc_y, DeeNumber, "EE", " ");
5429  }
5430 
5431  // vertical line between the two endcaps
5432  Double_t xline = coefcc_x*( 2*fEcal->MaxCrysIXInDee()
5433  + ((Double_t)vertic_empty_strips)/2.*fEcal->MaxCrysIXInSC() );
5434 
5435  Double_t yline_bot = coefcc_y*(Double_t)0.;
5436  Double_t yline_top = coefcc_y*(Double_t)fEcal->MaxCrysIYInDee();
5437 
5438  TLine *lin;
5439  lin = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5440  lin->Draw();
5441 
5442  // vertical line in the midles of the two endcaps
5443  // xline = xline + coefcc_x*( fEcal->MaxCrysIXInDee()+ 0.5*fEcal->MaxCrysIXInSC() );
5444  xline = coefcc_x*(3*fEcal->MaxCrysIXInDee()
5445  + ((Double_t)vertic_empty_strips-1.)*fEcal->MaxCrysIXInSC() );
5446  TLine *lin12;
5447  lin12 = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5448  lin12->SetLineStyle(2);
5449  lin12->Draw();
5450 
5451  xline = coefcc_x*(fEcal->MaxCrysIXInDee()
5452  + ((Double_t)vertic_empty_strips)/3.*fEcal->MaxCrysIXInSC() );
5453  TLine *lin34;
5454  lin34 = new TLine(xline, yline_bot, xline, yline_top); fCnewRoot++;
5455  lin34->SetLineStyle(2);
5456  lin34->Draw();
5457 
5458  // horizontal line at IY = 50
5459  Double_t xline_end = coefcc_x*( 4*fEcal->MaxCrysIXInDee() + vertic_empty_strips*fEcal->MaxCrysIXInSC());
5460  Double_t yline_mid = coefcc_x*fEcal->MaxCrysIYInDee()/2;
5461 
5462  TLine *linh;
5463  linh = new TLine( 0., yline_mid, xline_end, yline_mid); fCnewRoot++;
5464  linh->SetLineStyle(2);
5465  linh->Draw();
5466 
5467 } // end of ViewEEGrid
5468 
5469 //==================================================================================================
5470 void TEcnaHistos::EEDataSectors(const Float_t& coefcc_x, const Float_t& coefcc_y,
5471  const Int_t& DeeNumber, const TString& opt_plot)
5472 {
5473  //Surlignage des bords du Dee et des Data Sectors. Numeros des secteurs.
5474 
5475  // Epaisseur du trait selon option
5476  Int_t LineWidth = 2; // DEFAULT => option "EE"
5477  if( opt_plot == "Dee" ){LineWidth = 3;}
5478 
5479  Int_t ngmax = 0;
5480  // surlignage du bord interne du Dee (unite de coordonnees: le cristal)
5481  ngmax = 13;
5482  Float_t xg_dee_int_bot[13] = { 0, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11};
5483  Float_t yg_dee_int_bot[13] = {39,39,40,40,41,41,42,42,43,43,45,45,50};
5484  for(Int_t i=0;i<ngmax;i++){
5485  xg_dee_int_bot[i] = coefcc_x*xg_dee_int_bot[i];
5486  yg_dee_int_bot[i] = coefcc_y*yg_dee_int_bot[i];}
5487 
5488  Float_t XgDeeIntBotRight[13]; Float_t YgDeeIntBotRight[13];
5489  Float_t XgDeeIntTopRight[13]; Float_t YgDeeIntTopRight[13];
5490 
5491  for( Int_t i=0; i<ngmax; i++)
5492  {
5493  XgDeeIntBotRight[i] = xg_dee_int_bot[i];
5494  YgDeeIntBotRight[i] = yg_dee_int_bot[i];
5495  XgDeeIntTopRight[i] = XgDeeIntBotRight[i];
5496  YgDeeIntTopRight[i] = coefcc_y*fEcal->MaxCrysIYInDee() - YgDeeIntBotRight[i];
5497  if ( DeeNumber == 2 || DeeNumber == 4 )
5498  {
5499  XgDeeIntBotRight[i] = -XgDeeIntBotRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5500  XgDeeIntTopRight[i] = -XgDeeIntTopRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5501  }
5502  XgDeeIntBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5503  XgDeeIntTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5504  }
5505 
5506  TGraph *BDeeIntBotRight = new TGraph(ngmax, XgDeeIntBotRight, YgDeeIntBotRight);
5507  BDeeIntBotRight->SetLineWidth(LineWidth);
5508  BDeeIntBotRight->Draw();
5509 
5510  TGraph *BDeeIntTopRight = new TGraph(ngmax, XgDeeIntTopRight, YgDeeIntTopRight);
5511  BDeeIntTopRight->SetLineWidth(LineWidth);
5512  BDeeIntTopRight->Draw();
5513 
5514  // surlignage du bord externe du Dee (unite de coordonnees: le cristal)
5515  ngmax = 21;
5516  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};
5517  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};
5518  for(Int_t i=0;i<ngmax;i++){
5519  xg_dee_ext_bot[i] = coefcc_x*xg_dee_ext_bot[i];
5520  yg_dee_ext_bot[i] = coefcc_y*yg_dee_ext_bot[i];}
5521 
5522  Float_t XgDeeExtBotRight[21]; Float_t YgDeeExtBotRight[21];
5523  Float_t XgDeeExtTopRight[21]; Float_t YgDeeExtTopRight[21];
5524 
5525  for( Int_t i=0; i<ngmax; i++)
5526  {
5527  XgDeeExtBotRight[i] = xg_dee_ext_bot[i];
5528  YgDeeExtBotRight[i] = yg_dee_ext_bot[i];
5529  XgDeeExtTopRight[i] = XgDeeExtBotRight[i];
5530  YgDeeExtTopRight[i] = coefcc_y*fEcal->MaxCrysIYInDee() - YgDeeExtBotRight[i];
5531  if ( DeeNumber == 2 || DeeNumber == 4 )
5532  {
5533  XgDeeExtBotRight[i] = -XgDeeExtBotRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5534  XgDeeExtTopRight[i] = -XgDeeExtTopRight[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5535  }
5536  XgDeeExtBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5537  XgDeeExtTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5538  }
5539 
5540  TGraph *BDeeExtBotRight = new TGraph(ngmax, XgDeeExtBotRight, YgDeeExtBotRight);
5541  BDeeExtBotRight->SetLineWidth(LineWidth);
5542  BDeeExtBotRight->Draw();
5543 
5544  TGraph *BDeeExtTopRight = new TGraph(ngmax, XgDeeExtTopRight, YgDeeExtTopRight);
5545  BDeeExtTopRight->SetLineWidth(LineWidth);
5546  BDeeExtTopRight->Draw();
5547 
5548  char* f_in = new char[fgMaxCar]; fCnew++;
5549 
5550  //............. Surlignage separateurs des secteurs en phi (Data sectors)
5551 
5552  //================== S9 -> S1 (EE-) option "EE" seulement
5553  if( opt_plot == "EE" )
5554  {
5555  ngmax = 2;
5556  Float_t xg_dee_data_sec9[2] = { 0, 0};
5557  Float_t yg_dee_data_sec9[2] = {61,100};
5558  for(Int_t i=0;i<ngmax;i++){
5559  xg_dee_data_sec9[i] = coefcc_x*xg_dee_data_sec9[i];
5560  yg_dee_data_sec9[i] = coefcc_y*yg_dee_data_sec9[i];}
5561 
5562  Float_t XgDeeDataSec9[11]; Float_t YgDeeDataSec9[11];
5563  for( Int_t i=0; i<ngmax; i++)
5564  {
5565  XgDeeDataSec9[i] = xg_dee_data_sec9[i]; YgDeeDataSec9[i] = yg_dee_data_sec9[i];
5566  if ( DeeNumber == 2 || DeeNumber == 4 )
5567  {
5568  XgDeeDataSec9[i] = -XgDeeDataSec9[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5569  }
5570  XgDeeDataSec9[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5571  }
5572  TGraph *BDeeDataSec9 = new TGraph(ngmax, XgDeeDataSec9, YgDeeDataSec9);
5573  BDeeDataSec9->SetLineWidth(LineWidth);
5574  BDeeDataSec9->Draw();
5575  }
5576 
5577  //================= S1->S2(EE-)
5578  ngmax = 11;
5579  Float_t xg_dee_data_sec1[11] = { 7,10,10,15,15,20,20,25,25,30,30};
5580  Float_t yg_dee_data_sec1[11] = {60,60,65,65,70,70,75,75,85,85,87};
5581  for(Int_t i=0;i<ngmax;i++){
5582  xg_dee_data_sec1[i] = coefcc_x*xg_dee_data_sec1[i];
5583  yg_dee_data_sec1[i] = coefcc_y*yg_dee_data_sec1[i];}
5584 
5585  Float_t XgDeeDataSec1[11]; Float_t YgDeeDataSec1[11];
5586  for( Int_t i=0; i<ngmax; i++)
5587  {
5588  XgDeeDataSec1[i] = xg_dee_data_sec1[i]; YgDeeDataSec1[i] = yg_dee_data_sec1[i];
5589  if ( DeeNumber == 2 || DeeNumber == 4 )
5590  {
5591  XgDeeDataSec1[i] = -XgDeeDataSec1[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5592  }
5593  XgDeeDataSec1[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5594  }
5595 
5596  TGraph *BDeeDataSec1 = new TGraph(ngmax, XgDeeDataSec1, YgDeeDataSec1);
5597  BDeeDataSec1->SetLineWidth(LineWidth);
5598  BDeeDataSec1->Draw();
5599 
5600  //================= S2->S3(EE-)
5601  ngmax = 6;
5602  Float_t xg_dee_data_sec2[6] = {11,15,15,40,40,47};
5603  Float_t yg_dee_data_sec2[6] = {50,50,55,55,60,60};
5604  for(Int_t i=0;i<ngmax;i++){
5605  xg_dee_data_sec2[i] = coefcc_x*xg_dee_data_sec2[i];
5606  yg_dee_data_sec2[i] = coefcc_y*yg_dee_data_sec2[i];}
5607 
5608  Float_t XgDeeDataSec2[6]; Float_t YgDeeDataSec2[6];
5609  for( Int_t i=0; i<ngmax; i++)
5610  {
5611  XgDeeDataSec2[i] = xg_dee_data_sec2[i]; YgDeeDataSec2[i] = yg_dee_data_sec2[i];
5612  if ( DeeNumber == 2 || DeeNumber == 4 )
5613  {
5614  XgDeeDataSec2[i] = -XgDeeDataSec2[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5615  }
5616  XgDeeDataSec2[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5617  }
5618  TGraph *BDeeDataSec2 = new TGraph(ngmax, XgDeeDataSec2, YgDeeDataSec2);
5619  BDeeDataSec2->SetLineWidth(LineWidth);
5620  BDeeDataSec2->Draw();
5621 
5622  //================= S3->S4(EE-)
5623  ngmax = 10;
5624  Float_t xg_dee_data_sec3[10] = {10,15,15,20,20,30,30,40,40,42};
5625  Float_t yg_dee_data_sec3[10] = {45,45,40,40,35,35,30,30,25,25};
5626  for(Int_t i=0;i<ngmax;i++){
5627  xg_dee_data_sec3[i] = coefcc_x*xg_dee_data_sec3[i];
5628  yg_dee_data_sec3[i] = coefcc_y*yg_dee_data_sec3[i];}
5629 
5630  Float_t XgDeeDataSec3[10]; Float_t YgDeeDataSec3[10];
5631  for( Int_t i=0; i<ngmax; i++)
5632  {
5633  XgDeeDataSec3[i] = xg_dee_data_sec3[i]; YgDeeDataSec3[i] = yg_dee_data_sec3[i];
5634  if ( DeeNumber == 2 || DeeNumber == 4 )
5635  {
5636  XgDeeDataSec3[i] = -XgDeeDataSec3[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5637  }
5638  XgDeeDataSec3[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5639  }
5640  TGraph *BDeeDataSec3 = new TGraph(ngmax, XgDeeDataSec3, YgDeeDataSec3);
5641  BDeeDataSec3->SetLineWidth(LineWidth);
5642  BDeeDataSec3->Draw();
5643 
5644  //================= S4->S5(EE-)
5645  ngmax = 6;
5646  Float_t xg_dee_data_sec4[6] = { 5, 5,10,10,15,15};
5647  Float_t yg_dee_data_sec4[6] = {40,30,30,15,15, 5};
5648  for(Int_t i=0;i<ngmax;i++){
5649  xg_dee_data_sec4[i] = coefcc_x*xg_dee_data_sec4[i];
5650  yg_dee_data_sec4[i] = coefcc_y*yg_dee_data_sec4[i];}
5651 
5652  Float_t XgDeeDataSec4[6]; Float_t YgDeeDataSec4[6];
5653  for( Int_t i=0; i<ngmax; i++)
5654  {
5655  XgDeeDataSec4[i] = xg_dee_data_sec4[i]; YgDeeDataSec4[i] = yg_dee_data_sec4[i];
5656  if ( DeeNumber == 2 || DeeNumber == 4 )
5657  {
5658  XgDeeDataSec4[i] = -XgDeeDataSec4[i] + coefcc_x*fEcal->MaxCrysIXInDee();
5659  }
5660  XgDeeDataSec4[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5661  }
5662  TGraph *BDeeDataSec4 = new TGraph(ngmax, XgDeeDataSec4, YgDeeDataSec4);
5663  BDeeDataSec4->SetLineWidth(LineWidth);
5664  BDeeDataSec4->Draw();
5665 
5666 
5667  //..................................... Numeros des secteurs S_i (option "Dee" seulement)
5668  if( opt_plot == "Dee" || opt_plot == "EE" )
5669  {
5670  //............. Coordonnees des numeros de secteurs
5671  ngmax = 5;
5672  Float_t xg_coord_sector[5] = { 16, 41, 45, 33, -2};
5673  Float_t yg_coord_sector[5] = { 96, 83, 30, 5, -8};
5674 
5675  //....... Reprise secteurs 3 et 7
5676  if(opt_plot == "Dee" && (DeeNumber == 1) ){xg_coord_sector[2] += 0.5;}
5677  if(opt_plot == "Dee" && (DeeNumber == 2) ){xg_coord_sector[2] -= 1. ;}
5678  if(opt_plot == "Dee" && (DeeNumber == 3) ){xg_coord_sector[2] += 0.7;}
5679  if(opt_plot == "Dee" && (DeeNumber == 4) ){xg_coord_sector[2] -= 1.2;}
5680 
5681  if(opt_plot == "EE" && (DeeNumber == 2 || DeeNumber == 3) ){xg_coord_sector[2] += 0.55;}
5682  if(opt_plot == "EE" && (DeeNumber == 4 ) ){xg_coord_sector[2] -= 0.2;}
5683 
5684  for(Int_t i=0;i<ngmax;i++){
5685  xg_coord_sector[i] = coefcc_x*xg_coord_sector[i];
5686  yg_coord_sector[i] = coefcc_y*yg_coord_sector[i];}
5687 
5688  Float_t xg_sector[9];
5689  Float_t yg_sector[9];
5690  Int_t ns1 = 1;
5691  Int_t ns2 = 5;
5692  Float_t xinv_d2d4 = coefcc_x*44;
5693 
5694  if( DeeNumber == 1 )
5695  {
5696  ns1 = 1; ns2 = 5;
5697  xg_sector[1-ns1] = xg_coord_sector[1-ns1]; yg_sector[1-ns1] = yg_coord_sector[1-ns1];
5698  xg_sector[2-ns1] = xg_coord_sector[2-ns1]; yg_sector[2-ns1] = yg_coord_sector[2-ns1];
5699  xg_sector[3-ns1] = xg_coord_sector[3-ns1]; yg_sector[3-ns1] = yg_coord_sector[3-ns1];
5700  xg_sector[4-ns1] = xg_coord_sector[4-ns1]; yg_sector[4-ns1] = yg_coord_sector[4-ns1];
5701  xg_sector[5-ns1] = xg_coord_sector[5-ns1]; yg_sector[5-ns1] = yg_coord_sector[5-ns1];
5702  }
5703 
5704  if( DeeNumber == 2 )
5705  {
5706  ns1 = 5; ns2 = 9;
5707  xg_sector[ns2-1] = xinv_d2d4-xg_coord_sector[1-1]; yg_sector[ns2-1] = yg_coord_sector[1-1];
5708  xg_sector[ns2-2] = xinv_d2d4-xg_coord_sector[2-1]; yg_sector[ns2-2] = yg_coord_sector[2-1];
5709  xg_sector[ns2-3] = xinv_d2d4-xg_coord_sector[3-1]; yg_sector[ns2-3] = yg_coord_sector[3-1];
5710  xg_sector[ns2-4] = xinv_d2d4-xg_coord_sector[4-1]; yg_sector[ns2-4] = yg_coord_sector[4-1];
5711  xg_sector[ns2-5] = xinv_d2d4-xg_coord_sector[5-1]; yg_sector[ns2-5] = yg_coord_sector[5-1];
5712  }
5713  if( DeeNumber == 3 )
5714  {
5715  ns1 = 5; ns2 = 9;
5716  xg_sector[ns2-1]= xg_coord_sector[1-1]; yg_sector[ns2-1] = yg_coord_sector[1-1];
5717  xg_sector[ns2-2]= xg_coord_sector[2-1]; yg_sector[ns2-2] = yg_coord_sector[2-1];
5718  xg_sector[ns2-3]= xg_coord_sector[3-1]; yg_sector[ns2-3] = yg_coord_sector[3-1];
5719  xg_sector[ns2-4]= xg_coord_sector[4-1]; yg_sector[ns2-4] = yg_coord_sector[4-1];
5720  xg_sector[ns2-5]= xg_coord_sector[5-1]; yg_sector[ns2-5] = yg_coord_sector[5-1];
5721  }
5722  if( DeeNumber == 4 )
5723  {
5724  ns1 = 1; ns2 = 5;
5725  xg_sector[1-ns1]= xinv_d2d4-xg_coord_sector[1-ns1]; yg_sector[1-ns1] = yg_coord_sector[1-ns1];
5726  xg_sector[2-ns1]= xinv_d2d4-xg_coord_sector[2-ns1]; yg_sector[2-ns1] = yg_coord_sector[2-ns1];
5727  xg_sector[3-ns1]= xinv_d2d4-xg_coord_sector[3-ns1]; yg_sector[3-ns1] = yg_coord_sector[3-ns1];
5728  xg_sector[4-ns1]= xinv_d2d4-xg_coord_sector[4-ns1]; yg_sector[4-ns1] = yg_coord_sector[4-ns1];
5729  xg_sector[5-ns1]= xinv_d2d4-xg_coord_sector[5-ns1]; yg_sector[5-ns1] = yg_coord_sector[5-ns1];
5730  }
5731 
5732  Color_t coul_textsector = fCnaParHistos->ColorDefinition("vert37");
5733  for(Int_t ns=ns1; ns<= ns2; ns++)
5734  {
5735  xg_sector[ns-1] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5736  if( DeeNumber == 1 || DeeNumber == 2 ){sprintf( f_in, "+%d", ns);}
5737  if( DeeNumber == 3 || DeeNumber == 4 ){sprintf( f_in, "-%d", ns);}
5738  TText *text_num_module = new TText(xg_sector[ns-1], yg_sector[ns-1], f_in); fCnewRoot++;
5739  if(opt_plot == "Dee"){text_num_module->SetTextSize(0.065);}
5740  if(opt_plot == "EE" ){text_num_module->SetTextSize(0.045);}
5741  text_num_module->SetTextColor(coul_textsector);
5742  if( opt_plot == "Dee" ||
5743  ( opt_plot == "EE" && !( (DeeNumber == 3 && ns == 5) || (DeeNumber == 1 && ns == 5) ) ) )
5744  {text_num_module->Draw();}
5745 
5746  // text_num_module->Delete(); text_num_module = 0; fCdeleteRoot++;
5747  }
5748 
5749  //............................ numeros des dee's
5750  ngmax = 4;
5751  Float_t xg_coord_dee[4] = { 0, 0, 0, 0};
5752  Float_t yg_coord_dee[4] = {48, 48, 48, 48};
5753 
5754  xg_coord_dee[DeeNumber-1] = coefcc_x*xg_coord_dee[DeeNumber-1];
5755  yg_coord_dee[DeeNumber-1] = coefcc_y*yg_coord_dee[DeeNumber-1];
5756 
5757  Float_t xg_dee = xg_coord_dee[DeeNumber-1];
5758  Float_t yg_dee = yg_coord_dee[DeeNumber-1];
5759 
5760  Color_t coul_textdee = fCnaParHistos->ColorDefinition("noir");
5761 
5762  xg_dee += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber)
5763  + fCnaParHistos->DeeNumberOffsetX(opt_plot, DeeNumber);
5764 
5765  if( DeeNumber == 1 ){sprintf( f_in, "D1");}
5766  if( DeeNumber == 2 ){sprintf( f_in, "D2");}
5767  if( DeeNumber == 3 ){sprintf( f_in, "D3");}
5768  if( DeeNumber == 4 ){sprintf( f_in, "D4");}
5769 
5770  TText *text_num_module = new TText(xg_dee, yg_dee, f_in); fCnewRoot++;
5771  if( opt_plot == "EE" ){text_num_module->SetTextSize(0.045);}
5772  if( opt_plot == "Dee"){text_num_module->SetTextSize(0.085);}
5773  text_num_module->SetTextColor(coul_textdee);
5774  text_num_module->Draw();
5775  }
5776 
5777  //..................................... Numeros des Dee et indication EE+- (option "EE" seulement)
5778  if( opt_plot == "EE" )
5779  {
5780  //............................ indication EE+-
5781  ngmax = 4;
5782  Float_t xg_coord_eepm[4] = { 0, 0, 0, 0};
5783  Float_t yg_coord_eepm[4] = {95, 95, 95, 95};
5784 
5785  xg_coord_eepm[DeeNumber-1] = coefcc_x*xg_coord_eepm[DeeNumber-1];
5786  yg_coord_eepm[DeeNumber-1] = coefcc_y*yg_coord_eepm[DeeNumber-1];
5787 
5788  Float_t xg_eepm = xg_coord_eepm[DeeNumber-1];
5789  Float_t yg_eepm = yg_coord_eepm[DeeNumber-1];
5790 
5791  Color_t coul_texteepm = fCnaParHistos->ColorDefinition("noir");
5792 
5793  xg_eepm += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber)
5794  + fCnaParHistos->DeeNameOffsetX(DeeNumber);
5795 
5796  if( DeeNumber == 1 ){sprintf( f_in, "EE+F");}
5797  if( DeeNumber == 2 ){sprintf( f_in, "EE+N");}
5798  if( DeeNumber == 3 ){sprintf( f_in, "EE-N");}
5799  if( DeeNumber == 4 ){sprintf( f_in, "EE-F");}
5800 
5801  TText *text_num_eepm = new TText(xg_eepm, yg_eepm, f_in); fCnewRoot++;
5802  text_num_eepm->SetTextSize(0.04);
5803  text_num_eepm->SetTextColor(coul_texteepm);
5804  text_num_eepm->Draw();
5805  }
5806 
5807  //......................... mention "viewed from IP"
5808  Color_t coul_textfromIP = fCnaParHistos->ColorDefinition("rouge49");
5809  sprintf( f_in, "viewed from IP");
5810  Float_t x_from_ip = 15.;
5811  Float_t y_from_ip = -10.;
5812  if( opt_plot == "EE" ){y_from_ip = -16.;}
5813  x_from_ip = coefcc_x*x_from_ip;
5814  y_from_ip = coefcc_x*y_from_ip;
5815  if( opt_plot == "EE" && DeeNumber == 3 ){x_from_ip += 1.4*fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);}
5816  TText *text_from_ip = new TText(x_from_ip, y_from_ip, f_in); fCnewRoot++;
5817  text_from_ip->SetTextSize(0.045);
5818  if( opt_plot == "EE" ){text_from_ip->SetTextSize(0.035);}
5819  text_from_ip->SetTextColor(coul_textfromIP);
5820  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 3) ){text_from_ip->Draw();}
5821 
5822  delete [] f_in; f_in = 0; fCdelete++;
5823 
5824 } // ------ end of EEDataSectors() ------
5825 
5826 //==========================================================================================
5827 
5828 void TEcnaHistos::EEGridAxis(const Float_t& coefcc_x, const Float_t& coefcc_y,
5829  const Int_t& DeeNumber, const TString& opt_plot, const TString& c_option)
5830 {
5831  //------------------ trace axes en IX et IY --------------- EEGridAxis
5832  //=============================================================================== Axe IX
5833  Int_t size_IX_dee = fEcal->MaxSCIXInDee();
5834 
5835  Double_t IX_min = fEcalNumbering->GetIIXMin(1) - 0.5; // IX_min = 0.5 pour les 4 dee's
5836  Double_t IX_max = fEcalNumbering->GetIIXMax()*fEcal->MaxCrysIXInSC() + 0.5; // IX_max = 50.5 pour les 4 dee's
5837 
5838  Int_t MatSize = 1;
5839  if( opt_plot == "Dee" && c_option == "corcc" )
5840  {
5841  MatSize = fEcal->MaxCrysInSC();
5842  IX_min = fEcalNumbering->GetIIXMin() - 0.5;
5843  IX_max = fEcalNumbering->GetIIXMax() + 0.5;
5844  }
5845  if( opt_plot == "EE" && c_option == "corcc" ){return;} // => a voir...
5846 
5847  if( opt_plot == "Dee" && c_option != "corcc" ){MatSize = fEcal->MaxCrysIXInSC();}
5848  if( opt_plot == "EE" && c_option != "corcc" ){MatSize = 1;}
5849 
5850  TString x_var_name = " ";
5851 
5852  Float_t axis_x_inf = 0;
5853  Float_t axis_x_sup = 0;
5854  Float_t axis_y_inf = 0;
5855  Float_t axis_y_sup = 0;
5856  Int_t axis_nb_div = 205; // DEFAULT: option "EE"
5857  Double_t IX_values_min = 0;
5858  Double_t IX_values_max = 0;
5859  Option_t* chopt = "C";
5860 
5861  //........................................................................EEGridAxis
5862  if( DeeNumber == 1 ) // xmin -> xmax <=> right->left
5863  {
5864  //.....axis min->max/left->right: first draw axis with -ticksize and no label
5865  axis_x_inf = size_IX_dee*MatSize;
5866  axis_x_sup = 0;
5867  axis_y_inf = 0;
5868  axis_y_sup = 0;
5869  IX_values_min = -IX_max; // -50.5 right
5870  IX_values_max = -IX_min; // - 0.5 left
5871  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee1");}
5872  if( opt_plot == "EE" ){x_var_name = GetIXIYAxisTitle("iIXEE");}
5873  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5874  chopt = "-CSU";
5875  }
5876  if( DeeNumber == 2 ) // xmin -> xmax <=> right->left
5877  {
5878  //.....axis min->max/left->right: first draw axis with -ticksize and no label
5879  axis_x_inf = size_IX_dee*MatSize;
5880  axis_x_sup = 0;
5881  axis_y_inf = 0;
5882  axis_y_sup = 0;
5883  IX_values_min = IX_min; // + 0.5 right
5884  IX_values_max = IX_max; // +50.5 left
5885  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee2");}
5886  if( opt_plot == "EE" ){x_var_name = " ";}
5887  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5888  chopt = "-CSU";
5889  }
5890  if( DeeNumber == 3 ) // xmin -> xmax <=> left->right
5891  {
5892  axis_x_inf = 0;
5893  axis_x_sup = size_IX_dee*MatSize;
5894  axis_y_inf = 0;
5895  axis_y_sup = 0;
5896  IX_values_min = IX_min; // + 0.5 left
5897  IX_values_max = IX_max; // +50.5 right
5898  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee3");}
5899  if( opt_plot == "EE" ){x_var_name = " ";}
5900  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5901  chopt = "CS";
5902  }
5903  if( DeeNumber == 4 ) // xmin -> xmax <=> left->right
5904  {
5905  axis_x_inf = 0;
5906  axis_x_sup = size_IX_dee*MatSize;
5907  axis_y_inf = 0;
5908  axis_y_sup = 0;
5909  IX_values_min = -IX_max; // -50.5 left
5910  IX_values_max = -IX_min; // - 0.5 right
5911  if( opt_plot == "Dee" ){x_var_name = GetIXIYAxisTitle("iIXDee4");}
5912  if( opt_plot == "EE" ){x_var_name = " ";}
5913  if( opt_plot == "Dee" ){axis_nb_div = size_IX_dee;}
5914  chopt = "CS";
5915  }
5916 
5917  //.................................................................... EEGridAxis
5918  axis_x_inf += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5919  axis_x_sup += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5920 
5921  TGaxis* sup_axis_x = 0;
5922  sup_axis_x = new TGaxis(axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
5923  IX_values_min, IX_values_max, axis_nb_div, chopt, 0.); fCnewRoot++;
5924 
5925  Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
5926  Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
5927 
5928  Float_t tic_siz_x = fCnaParHistos->AxisTickSize("Deex");
5929  if(opt_plot == "EE"){tic_siz_x = fCnaParHistos->AxisTickSize("EEx");}
5930 
5931  Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("Deex");
5932  if(opt_plot == "EE"){tit_off_x = fCnaParHistos->AxisTitleOffset("EEx");}
5933 
5934  Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("Deex");
5935  if(opt_plot == "EE"){lab_off_x = fCnaParHistos->AxisLabelOffset("EEx");}
5936 
5937  sup_axis_x->SetTitle(x_var_name);
5938  sup_axis_x->SetTitleSize(tit_siz_x);
5939  sup_axis_x->SetTitleOffset(tit_off_x);
5940  sup_axis_x->SetLabelSize(lab_siz_x);
5941  sup_axis_x->SetLabelOffset(lab_off_x);
5942  sup_axis_x->SetTickSize(tic_siz_x);
5943  sup_axis_x->Draw("SAME");
5944 
5945  //.....axis min->max/right->left: redraw axis with ticksize = 0 and with -labelOffset
5946  if( DeeNumber == 1 || DeeNumber == 2 )
5947  {
5948  chopt = "CS";
5949  TGaxis* sup_axis_x_bis = 0;
5950  sup_axis_x_bis = new TGaxis(axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup,
5951  IX_values_min, IX_values_max, axis_nb_div, chopt, 0.); fCnewRoot++;
5952  sup_axis_x_bis->SetTickSize(0.);
5953  lab_siz_x = sup_axis_x->GetLabelSize();
5954  sup_axis_x_bis->SetLabelSize(lab_siz_x);
5955  lab_off_x = sup_axis_x->GetLabelOffset();
5956  sup_axis_x_bis->SetLabelOffset(-lab_off_x);
5957  sup_axis_x_bis->Draw("SAME");
5958  }
5959 
5960  //================================================================== Axe IY EEGridAxis
5961 
5962  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 4) )
5963  {
5964  Int_t size_IY_dee = fEcal->MaxSCIYInDee();
5965  Int_t size_IY_axis = size_IY_dee;
5966 
5967  if( opt_plot == "Dee" ){axis_nb_div = size_IY_axis;}
5968  if( opt_plot == "EE" ){axis_nb_div = 210;}
5969 
5970  Double_t jIY_min = fEcalNumbering->GetJIYMin(DeeNumber, 1) - 0.5;
5971  Double_t jIY_max = fEcalNumbering->GetJIYMax(DeeNumber)*fEcal->MaxCrysIYInSC() + 0.5;
5972 
5973  TString jy_var_name = " ";
5974  TString jy_direction = "x";
5975 
5976  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5977  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
5978 
5979  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("Deey");
5980  if(opt_plot == "EE"){tic_siz_y = fCnaParHistos->AxisTickSize("EEy");}
5981 
5982  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Deey");
5983  if(opt_plot == "EE"){tit_off_y = fCnaParHistos->AxisTitleOffset("EEy");}
5984 
5985  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Deey");
5986  if(opt_plot == "EE"){lab_off_y = fCnaParHistos->AxisLabelOffset("EEy");}
5987 
5988  TGaxis* axis_jy_plus = 0;
5989  axis_jy_plus = new TGaxis((Float_t)0., (Float_t)0.,
5990  (Float_t)0., (Float_t)(size_IY_axis*MatSize),
5991  jIY_min, jIY_max, axis_nb_div, "SC", 0.); fCnewRoot++;
5992 
5993  jy_var_name = GetIXIYAxisTitle("jIYDee");
5994  axis_jy_plus->SetTitle(jy_var_name);
5995  axis_jy_plus->SetTitleSize(tit_siz_y);
5996  axis_jy_plus->SetTitleOffset(tit_off_y);
5997  axis_jy_plus->SetLabelSize(lab_siz_y);
5998  axis_jy_plus->SetLabelOffset(lab_off_y);
5999  axis_jy_plus->SetTickSize(tic_siz_y);
6000  axis_jy_plus->Draw("SAME");
6001  }
6002 
6003 //---------------------------------- 2 axes (0,50) et (0,-50)
6004 #define IYAX
6005 #ifndef IYAX
6006  if( opt_plot == "Dee" || (opt_plot == "EE" && DeeNumber == 4) )
6007  {
6008  Int_t size_IY_dee = fEcal->MaxSCIYInDee();
6009  Int_t size_IY_axis = size_IY_dee/2;
6010 
6011  if( opt_plot == "Dee" ){axis_nb_div = (Int_t)size_IY_axis;}
6012  if( opt_plot == "EE" ){axis_nb_div = 5;}
6013 
6014  Double_t jIY_min = fEcalNumbering->GetJIYMin(DeeNumber, 1) - 0.5;
6015  Double_t jIY_max = (fEcalNumbering->GetJIYMax(DeeNumber)/2)*fEcal->MaxCrysIYInSC() + 0.5;
6016 
6017  TString jy_var_name = " ";
6018  TString jy_direction = "x";
6019 
6020  Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
6021  Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
6022 
6023  Float_t tic_siz_y = fCnaParHistos->AxisTickSize("Deey");
6024  if(opt_plot == "EE"){tic_siz_y = fCnaParHistos->AxisTickSize("EEy");}
6025 
6026  Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Deey");
6027  if(opt_plot == "EE"){tit_off_y = fCnaParHistos->AxisTitleOffset("EEy");}
6028 
6029  Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Deey");
6030  if(opt_plot == "EE"){lab_off_y = fCnaParHistos->AxisLabelOffset("EEy");}
6031 
6032  TGaxis* axis_jy_plus = 0;
6033  axis_jy_plus = new TGaxis((Float_t)0., (Float_t)(size_IY_dee*MatSize/2),
6034  (Float_t)0., (Float_t)(2*size_IY_dee*MatSize/2),
6035  jIY_min, jIY_max, axis_nb_div, "SC", 0.); fCnewRoot++;
6036 
6037  jy_var_name = GetIXIYAxisTitle("jIYDee");
6038  axis_jy_plus->SetTitle(jy_var_name);
6039  axis_jy_plus->SetTitleSize(tit_siz_y);
6040  axis_jy_plus->SetTitleOffset(tit_off_y);
6041  axis_jy_plus->SetLabelSize(lab_siz_y);
6042  axis_jy_plus->SetLabelOffset(lab_off_y);
6043  axis_jy_plus->SetTickSize(tic_siz_y);
6044  axis_jy_plus->Draw("SAME");
6045 
6046  TGaxis* axis_jy_minus = 0;
6047  axis_jy_minus = new TGaxis((Float_t)0., (Float_t)(size_IY_dee*MatSize/2),
6048  (Float_t)0., (Float_t)0.,
6049  -jIY_min, -jIY_max, axis_nb_div, "-SC", 0.); fCnewRoot++;
6050 
6051  jy_var_name = GetIXIYAxisTitle("jIYDee");
6052  axis_jy_minus->SetTitle(jy_var_name);
6053  axis_jy_minus->SetTitleSize(tit_siz_y);
6054  axis_jy_minus->SetTitleOffset(tit_off_y);
6055  axis_jy_minus->SetLabelSize(lab_siz_y);
6056  axis_jy_minus->SetLabelOffset(lab_off_y);
6057  axis_jy_minus->SetTickSize(tic_siz_y);
6058  axis_jy_minus->Draw("SAME");
6059  }
6060 #endif // IYAX
6061 
6062 } // ------------- end of EEGridAxis(...) --------------
6063 
6064 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6065 //
6066 // ViewHisto(***)
6067 //
6068 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6069 //======================== D_MSp_SpNb
6070 void TEcnaHistos::XtalSamplesEv(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6071  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6072 {XtalSamplesEv(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6073 void TEcnaHistos::XtalSamplesEv(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6074  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6075  const TString& PlotOption)
6076 {
6077  if( fFapStexNumber > 0 )
6078  {
6079  if( PlotOption == fAllXtalsInStinPlot )
6080  {
6081  Int_t StexStin_A = n1StexStin;
6082  if( fFlagSubDet == "EE" )
6083  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6084 
6085  Bool_t aOKData = kFALSE;
6086  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6087 
6088  if( arg_AlreadyRead == fTobeRead )
6089  {
6095 
6096  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6097  {
6098  fStatusFileFound = kTRUE;
6099  read_histo = fMyRootFile->ReadSampleMeans(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6100  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6101  }
6102  else
6103  {
6104  fStatusFileFound = kFALSE;
6105  cout << "!TEcnaHistos::XtalSamplesEv(...)> Data not available (ROOT file not found)." << endl;
6106  }
6107  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6108  }
6109  if( arg_AlreadyRead >= 1 )
6110  {
6111  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6112  fStatusDataExist = kTRUE;
6113  aOKData = kTRUE;
6114  }
6115 
6116  if( aOKData == kTRUE )
6117  {
6118  TVectorD read_histo_samps(fFapNbOfSamples);
6119 
6120  Int_t xAlreadyRead = 1;
6121  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6122  {
6123  if( fFapStexName == "SM" )
6124  {cout << "*TEcnaHistos::XtalSamplesEv(...)> channel " << setw(2) << i0_stin_echa << ": ";}
6125  if( fFapStexName == "Dee" )
6126  {cout << "*TEcnaHistos::XtalSamplesEv(...)> Xtal " << setw(2) << i0_stin_echa+1 << ": ";}
6127 
6128  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6129  {
6130  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6131  cout << setprecision(4) << setw(8) << read_histo_samps(i0_samp) << ", " ;
6132  }
6133  cout << endl;
6134  ViewHisto(read_histo_samps, xAlreadyRead,
6135  StexStin_A, i0_stin_echa, fZerv, "D_MSp_SpNb", fAllXtalsInStinPlot);
6136  xAlreadyRead++;
6137  }
6138  xAlreadyRead = 0;
6139  }
6140  else
6141  {
6142  cout << "!TEcnaHistos::XtalSamplesEv(...)> Data not available." << endl;
6143  }
6144  }
6145 
6146  if( !(PlotOption == fAllXtalsInStinPlot) )
6147  {
6148  Int_t StexStin_A = n1StexStin;
6149  if( fFlagSubDet == "EE" )
6150  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6151  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_MSp_SpNb", PlotOption);
6152  }
6153  }
6154  else
6155  {
6156  cout << "!TEcnaHistos::XtalSamplesEv(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6157  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << endl;
6158  }
6159 }
6160 
6161 //======================== D_MSp_SpDs
6162 void TEcnaHistos::EvSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6163  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6164 {EvSamplesXtals(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6165 void TEcnaHistos::EvSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6166  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6167  const TString& PlotOption)
6168 {
6169  if( fFapStexNumber > 0 )
6170  {
6171  if( PlotOption == fAllXtalsInStinPlot )
6172  {
6173  Int_t StexStin_A = n1StexStin;
6174  if( fFlagSubDet == "EE" )
6175  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6176 
6177  Bool_t aOKData = kFALSE;
6178  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6179 
6180  if( arg_AlreadyRead == fTobeRead )
6181  {
6187 
6188  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6189  {
6190  fStatusFileFound = kTRUE;
6191  read_histo = fMyRootFile->ReadSampleMeans(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6192  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6193  }
6194  else
6195  {
6196  fStatusFileFound = kFALSE;
6197  cout << "!TEcnaHistos::EvSamplesXtals(...)> Data not available (ROOT file not found)." << endl;
6198  }
6199  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6200  }
6201  if( arg_AlreadyRead >= 1 )
6202  {
6203  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6204  fStatusDataExist = kTRUE;
6205  aOKData = kTRUE;
6206  }
6207  if( aOKData == kTRUE )
6208  {
6209  TVectorD read_histo_samps(fFapNbOfSamples);
6210 
6211  Int_t xAlreadyRead = 1;
6212  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6213  {
6214  if( fFapStexName == "SM" )
6215  {cout << "*TEcnaHistos::EvSamplesXtals(...)> channel " << setw(2) << i0_stin_echa << ": ";}
6216  if( fFapStexName == "Dee" )
6217  {cout << "*TEcnaHistos::EvSamplesXtals(...)> Xtal " << setw(2) << i0_stin_echa+1 << ": ";}
6218 
6219  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6220  {
6221  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6222  cout << setprecision(4) << setw(8) << read_histo_samps(i0_samp) << ", " ;
6223  }
6224  cout << endl;
6225  ViewHisto(read_histo_samps, xAlreadyRead,
6226  StexStin_A, i0_stin_echa, fZerv, "D_MSp_SpDs", fAllXtalsInStinPlot);
6227  xAlreadyRead++;
6228  }
6229  xAlreadyRead = 0;
6230  }
6231  else
6232  {
6233  cout << "!TEcnaHistos::EvSamplesXtals(...)> Data not available." << endl;
6234  }
6235  }
6236 
6237  if( !(PlotOption == fAllXtalsInStinPlot) )
6238  {
6239  Int_t StexStin_A = n1StexStin;
6240  if( fFlagSubDet == "EE" )
6241  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6242  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_MSp_SpDs", PlotOption);
6243  }
6244  }
6245  else
6246  {
6247  cout << "!TEcnaHistos::EvSamplesXtals(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6248  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << endl;
6249  }
6250 } // end of EvSamplesXtals(...)
6251 
6252 //======================== D_SSp_SpNb
6253 void TEcnaHistos::XtalSamplesSigma(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6254  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6255 {XtalSamplesSigma(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6256 void TEcnaHistos::XtalSamplesSigma(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6257  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6258  const TString& PlotOption)
6259 {
6260  if( fFapStexNumber > 0 )
6261  {
6262  if( PlotOption == fAllXtalsInStinPlot )
6263  {
6264  Int_t StexStin_A = n1StexStin;
6265  if( fFlagSubDet == "EE" )
6266  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6267 
6268  Bool_t aOKData = kFALSE;
6269  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6270 
6271  if( arg_AlreadyRead == fTobeRead )
6272  {
6278 
6279  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6280  {
6281  fStatusFileFound = kTRUE;
6282  read_histo = fMyRootFile->ReadSampleSigmas(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6283  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6284  }
6285  else
6286  {
6287  fStatusFileFound = kFALSE;
6288  cout << "!TEcnaHistos::XtalSamplesSigma(...)> Data not available (ROOT file not found)." << endl;
6289  }
6290  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6291  }
6292  if( arg_AlreadyRead >= 1 )
6293  {
6294  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6295  fStatusDataExist = kTRUE;
6296  aOKData = kTRUE;
6297  }
6298  if( aOKData == kTRUE )
6299  {
6300  TVectorD read_histo_samps(fFapNbOfSamples);
6301 
6302  Int_t xAlreadyRead = 1;
6303  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6304  {
6305  if( fFapStexName == "SM" )
6306  {cout << "*TEcnaHistos::XtalSamplesSigma(...)> channel " << setw(2) << i0_stin_echa << ": ";}
6307  if( fFapStexName == "Dee" )
6308  {cout << "*TEcnaHistos::XtalSamplesSigma(...)> Xtal " << setw(2) << i0_stin_echa+1 << ": ";}
6309 
6310  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6311  {
6312  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6313  cout << setprecision(3) << setw(6) << read_histo_samps(i0_samp) << ", " ;
6314  }
6315  cout << endl;
6316  ViewHisto(read_histo_samps, xAlreadyRead,
6317  StexStin_A, i0StinEcha, fZerv, "D_SSp_SpNb", fAllXtalsInStinPlot);
6318  xAlreadyRead++;
6319  }
6320  xAlreadyRead = 0;
6321  }
6322  else
6323  {
6324  cout << "!TEcnaHistos::XtalSamplesSigma(...)> Data not available." << endl;
6325  }
6326  }
6327 
6328  if( !(PlotOption == fAllXtalsInStinPlot) )
6329  {
6330  Int_t StexStin_A = n1StexStin;
6331  if( fFlagSubDet == "EE" )
6332  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6333  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_SSp_SpNb", PlotOption);
6334  }
6335  }
6336  else
6337  {
6338  cout << "!TEcnaHistos::XtalSamplesSigma(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6339  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << endl;
6340  }
6341 }
6342 
6343 
6344 //======================== D_SSp_SpDs
6345 void TEcnaHistos::SigmaSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6346  const Int_t& n1StexStin, const Int_t& i0StinEcha)
6347 {SigmaSamplesXtals(arg_read_histo, arg_AlreadyRead, n1StexStin, i0StinEcha, "ONLYONE");}
6348 void TEcnaHistos::SigmaSamplesXtals(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6349  const Int_t& n1StexStin, const Int_t& i0StinEcha,
6350  const TString& PlotOption)
6351 {
6352  if( fFapStexNumber > 0 )
6353  {
6354  if( PlotOption == fAllXtalsInStinPlot )
6355  {
6356  Int_t StexStin_A = n1StexStin;
6357  if( fFlagSubDet == "EE" )
6358  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6359 
6360  Bool_t aOKData = kFALSE;
6361  TVectorD read_histo(fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6362 
6363  if( arg_AlreadyRead == fTobeRead )
6364  {
6370  if ( fMyRootFile->LookAtRootFile() == kTRUE )
6371  {
6372  fStatusFileFound = kTRUE;
6373  read_histo = fMyRootFile->ReadSampleSigmas(StexStin_A, fEcal->MaxCrysInStin()*fEcal->MaxSampADC());
6374  if( fMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE;}
6375  }
6376  else
6377  {
6378  fStatusFileFound = kFALSE;
6379  cout << "!TEcnaHistos::SigmaSamplesXtals(...)> Data not available (ROOT file not found)." << endl;
6380  }
6381  if( fStatusFileFound == kTRUE && fStatusDataExist == kTRUE ){aOKData = kTRUE;}
6382  }
6383 
6384  if( arg_AlreadyRead >= 1 )
6385  {
6386  for(Int_t i=0; i<fEcal->MaxCrysInStin()*fEcal->MaxSampADC(); i++){read_histo[i] = arg_read_histo[i];}
6387  fStatusDataExist = kTRUE;
6388  aOKData = kTRUE;
6389  }
6390  if( aOKData == kTRUE )
6391  {
6392  TVectorD read_histo_samps(fFapNbOfSamples);
6393 
6394  Int_t xAlreadyRead = 1;
6395  for( Int_t i0_stin_echa=0; i0_stin_echa<fEcal->MaxCrysInStin(); i0_stin_echa++)
6396  {
6397  if( fFapStexName == "SM" )
6398  {cout << "*TEcnaHistos::SigmaSamplesXtals(...)> channel " << setw(2) << i0_stin_echa << ": ";}
6399  if( fFapStexName == "Dee" )
6400  {cout << "*TEcnaHistos::SigmaSamplesXtals(...)> Xtal " << setw(2) << i0_stin_echa+1 << ": ";}
6401 
6402  for( Int_t i0_samp=0; i0_samp<fFapNbOfSamples; i0_samp++ )
6403  {
6404  read_histo_samps(i0_samp) = read_histo(i0_stin_echa*fFapNbOfSamples+i0_samp);
6405  cout << setprecision(3) << setw(6) << read_histo_samps(i0_samp) << ", " ;
6406  }
6407  cout << endl;
6408  ViewHisto(read_histo_samps, xAlreadyRead,
6409  StexStin_A, i0StinEcha, fZerv, "D_SSp_SpDs", fAllXtalsInStinPlot);
6410  xAlreadyRead++;
6411  }
6412  xAlreadyRead = 0;
6413  }
6414  else
6415  {
6416  cout << "!TEcnaHistos::SigmaSamplesXtals(...)> Data not available." << endl;
6417  }
6418  }
6419 
6420  if( !(PlotOption == fAllXtalsInStinPlot) )
6421  {
6422  Int_t StexStin_A = n1StexStin;
6423  if( fFlagSubDet == "EE" )
6424  {StexStin_A = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, n1StexStin);}
6425  ViewHisto(fReadHistoDummy, fTobeRead, StexStin_A, i0StinEcha, fZerv, "D_SSp_SpDs", PlotOption);
6426  }
6427  }
6428  else
6429  {
6430  cout << "!TEcnaHistos::SigmaSamplesXtals(...)> " << fFapStexName.Data() << " number = " << fFapStexNumber
6431  << " out of range (range = [1," << fEcal->MaxStexInStas() << "])" << fTTBELL << endl;
6432  }
6433 } // end of SigmaSamplesXtals(...)
6434 
6435 //==========================================================================================
6436 //
6437 // ViewHisto
6438 //
6439 // arg_read_histo = array containing the values
6440 // arg_AlreadyRead = histo flag: =1 => arg_read_histo exists,
6441 // =0 => values will be read by internal
6442 // call to TEcnaRead inside ViewHisto
6443 // StexStin_A = [1,68] or [1,150] ==> tower# if EB, SC# if EE
6444 // i0StinEcha = [0,24] = Electronic channel# in tower (if EB) or SC (if EE)
6445 // i0Sample = [0,9] = sample#
6446 // HistoCode = String for histo type (pedestal, total noise, mean cor(s,s), ...)
6447 // opt_plot_arg = String for plot option (SAME or not SAME)
6448 //
6449 //===========================================================================================
6450 void TEcnaHistos::ViewHisto(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
6451  const Int_t& StexStin_A, const Int_t& i0StinEcha,
6452  const Int_t& i0Sample, const TString& HistoCode,
6453  const TString& opt_plot_arg)
6454 {
6455  //Histogram of the quantities (one run)
6456 
6457  TString opt_plot = opt_plot_arg;
6458  fPlotAllXtalsInStin = 0;
6459 
6460  if( opt_plot_arg == fAllXtalsInStinPlot ){opt_plot = fOnlyOnePlot; fPlotAllXtalsInStin = 1;}
6461 
6462  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
6463 
6464  Int_t OKHisto = 0;
6465 
6466  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Canvas already closed in option SAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6467  Int_t xCanvasExists = 1; // a priori ==> Canvas exists // (ViewHisto)
6468  if( opt_plot != fOnlyOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6469  {
6470  TVirtualPad* main_subpad = 0;
6471  //---------------- Call to ActivePad
6472  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
6473  if( main_subpad == 0 )
6474  {
6475  cout << "*TEcnaHistos::ViewHisto(...)> WARNING ===> Canvas has been closed in option SAME or SAME n."
6476  << endl
6477  << " Please, restart with a new canvas."
6478  << fTTBELL << endl;
6479 
6480  ReInitCanvas(HistoCode, opt_plot);
6481  xCanvasExists = 0;
6482  }
6483  }
6484  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6485 
6486  //%%%%%%%%%%%%%%%%%%%%%%%% Change of X variable in option SAME n with no proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6487  Int_t SameXVarMemo = 1; // a priori ==> SAME n option: X variable OK (ViewHisto)
6488  if( !(HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") &&
6489  !(arg_AlreadyRead >= 1) )
6490  {
6491  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6492  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6493  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6494  {
6495  SetXVarMemo(HistoCode, opt_plot, XVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameXVarMemo = 1;
6496  }
6497  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6498  {
6499  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
6500  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
6501 
6502  if( XVarHisto != XVariableMemo )
6503  {
6504  cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> X coordinate changed in option SAME n." << endl
6505  << " Present X = " << XVarHisto << endl
6506  << " Present Y = " << YVarHisto << endl
6507  << " Previous X = " << XVariableMemo << endl
6508  << " Previous Y = " << YVariableMemo
6509  << fTTBELL << endl;
6510  SameXVarMemo = 0;
6511  }
6512  else
6513  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
6514  }
6515  }
6516  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6517 
6518  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Change of Y variable in option SAME n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6519  Int_t SameYVarMemo = 1; // a priori ==> SAME n option: Y variable OK (ViewHisto)
6520  if( (HistoType == "Proj" || HistoType == "SampProj" || HistoType == "EvolProj") &&
6521  !(arg_AlreadyRead >= 1) )
6522  {
6523  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6524  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
6525  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6526  {
6527  SetYVarMemo(HistoCode, opt_plot, YVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameYVarMemo = 1;
6528  }
6529  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6530  {
6531  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
6532  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
6533 
6534  if( YVarHisto != YVariableMemo )
6535  {
6536  cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> Y coordinate changed in option SAME n." << endl
6537  << " Present X = " << XVarHisto << endl
6538  << " Present Y = " << YVarHisto << endl
6539  << " Previous X = " << XVariableMemo << endl
6540  << " Previous Y = " << YVariableMemo
6541  << fTTBELL << endl;
6542  SameYVarMemo = 0;
6543  }
6544  else
6545  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
6546  }
6547  }
6548  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6549 
6550  //%%%%%%%%%%%%%%%%%%%%%%%%%%% Number of bins change in option SAME or SAME n %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6551  Int_t OkBinsMemoSameOne = 1; // a priori ==> SAME n option: Nb bins OK (ViewHisto)
6552 
6553  Int_t SizeForPlot = GetHistoSize(HistoCode.Data(), "plot");
6554  Int_t xNbBins = GetHistoNumberOfBins(HistoCode.Data(), SizeForPlot);
6555 
6556  if( (opt_plot == fSameOnePlot || opt_plot == fSeveralPlot) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
6557  {
6558  SetNbBinsMemo(HistoCode, opt_plot, xNbBins); OkBinsMemoSameOne = 1;
6559  }
6560 
6561  if( (opt_plot == fSameOnePlot || opt_plot == fSeveralPlot) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
6562  {
6563  Int_t NbBinsMemo = GetNbBinsFromMemo(HistoCode, opt_plot);
6564  if( xNbBins != NbBinsMemo )
6565  {
6566  cout << "!TEcnaHistos::ViewHisto(...)> *** ERROR *** ===> Number of bins changed in option SAME or SAME n."
6567  << " Present number = " << xNbBins << ", requested number = " << NbBinsMemo << fTTBELL << endl;
6568  OkBinsMemoSameOne = 0;
6569  }
6570  }
6571 
6572  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
6573 
6574  if( xCanvasExists == 1 && SameXVarMemo == 1 && SameYVarMemo == 1 && OkBinsMemoSameOne == 1 ){OKHisto = 1;}
6575 
6576  //======================== Histo accepted (ViewHisto)
6577  if( OKHisto == 1 )
6578  {
6579  Int_t opt_scale_x = fOptScaleLinx;
6580  if (fFlagScaleX == "LIN" ){opt_scale_x = fOptScaleLinx;}
6581  if (fFlagScaleX == "LOG" ){opt_scale_x = fOptScaleLogx;}
6582 
6583  Int_t opt_scale_y = fOptScaleLiny;
6584  if (fFlagScaleY == "LIN" ){opt_scale_y = fOptScaleLiny;}
6585  if (fFlagScaleY == "LOG" ){opt_scale_y = fOptScaleLogy;}
6586 
6588  TString fp_name_short = " ";
6589 
6590  //-------------------- read_histo size
6591  Int_t SizeForRead = GetHistoSize(HistoCode.Data(), "read");
6592 
6593  //............................................... allocation/init_histo
6594  TVectorD histo_for_plot(SizeForPlot);
6595  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot[i]=(Double_t)0;}
6596 
6597  TVectorD histo_for_plot_memo(SizeForPlot);
6598  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot_memo[i]=(Double_t)0;}
6599 
6600  Int_t i_data_exist = 0;
6601  Int_t OKPlot = 0;
6602 
6603  //------------------------------------- histos Global, (Global)Proj, SampGlobal and SampProj
6604  if( HistoType == "Global" || HistoType == "Proj" || HistoType == "SampGlobal" ||
6605  HistoType == "SampProj" )
6606  {
6607  if( fFapStexNumber == 0 )
6608  {
6609  Bool_t ok_view_histo = kFALSE;
6610 
6611  //--------------------------------------------------------------------- Stas Histo (ViewHisto)
6612  Int_t CounterExistingFile = 0;
6613  Int_t CounterDataExist = 0;
6614 
6615  Int_t* xFapNbOfEvts = new Int_t[fEcal->MaxStexInStas()]; fCnew++;
6616  for(Int_t i=0; i<fEcal->MaxStexInStas(); i++){xFapNbOfEvts[i]=0;}
6617 
6618  //Int_t* NOFE_int = new Int_t[fEcal->MaxCrysEcnaInStex()]; fCnew++;
6619 
6620  for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
6621  {
6622  Bool_t OKFileExists = kFALSE;
6623  Bool_t ok_data_exists = kFALSE;
6624 
6625  TVectorD read_histo(fEcal->MaxStinEcnaInStex());
6626  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex(); i++){read_histo(i)=(Double_t)0.;}
6627 
6628  if( arg_AlreadyRead == 0 )
6629  {
6630  //----------------------------------------------------------------------------- file reading
6632  Int_t n1StasStex = iStasStex+1;
6636  n1StasStex, fCfgResultsRootFilePath.Data());
6637 
6638  if( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewHisto, Stas)
6639  if( OKFileExists == kTRUE )
6640  {
6641  xFapNbOfEvts[iStasStex] = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, n1StasStex);
6642  fp_name_short = fMyRootFile->GetRootFileNameShort();
6643  // cout << "*TEcnaHistos::ViewHisto(...)> Data are analyzed from file ----> "
6644  // << fp_name_short << endl;
6645  //....................... search for first and last dates
6646  if( iStasStex == 0 )
6647  {
6652  }
6653 
6654  time_t xStartTime = fMyRootFile->GetStartTime();
6655  time_t xStopTime = fMyRootFile->GetStopTime();
6656  TString xStartDate = fMyRootFile->GetStartDate();
6657  TString xStopDate = fMyRootFile->GetStopDate();
6658 
6659  if( xStartTime < fStartTime ){fStartTime = xStartTime; fStartDate = xStartDate;}
6660  if( xStopTime > fStopTime ){fStopTime = xStopTime; fStopDate = xStopDate;}
6661 
6663  ok_view_histo =
6664  GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode.Data());
6665 
6666  if( ok_view_histo == kTRUE )
6667  {
6668  //............................................... histo reading (ViewHisto, Stas)
6669  if( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ){
6671  if( HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ){
6673  if( HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ){
6675  if( HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ){
6677  if( HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ){
6679  if( HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ){
6681  if( HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" ){
6683  if( fMyRootFile->DataExist() == kTRUE ){ok_data_exists = kTRUE;}
6684  }
6685  }
6686  }
6687 
6688  if( arg_AlreadyRead >= 1 )
6689  {
6690  ok_data_exists = kTRUE;
6691  for(Int_t i0Stin=0; i0Stin<fEcal->MaxStinEcnaInStex(); i0Stin++ )
6692  {read_histo(i0Stin) = arg_read_histo(fEcal->MaxStinEcnaInStex()*iStasStex+i0Stin);}
6693  }
6694 
6695  if( ok_data_exists == kTRUE )
6696  {
6697  fStatusFileFound = kTRUE;
6698  CounterExistingFile++;
6699 
6700 
6701  //...........................................................
6702  if( ok_data_exists == kTRUE )
6703  {
6704  fStatusDataExist = kTRUE;
6705  CounterDataExist++;
6706 
6707  for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
6708  {
6709  //Int_t n1StexStinEcna = i0StexStinEcna+1;
6710  //-------------------------------------- Stas histo filling (ViewHisto, Stas)
6711  Int_t i_xgeo = -1;
6712  //...................................... EB
6713  if( fFlagSubDet == "EB" )
6714  {
6715  i_xgeo = iStasStex*fEcal->MaxStinEcnaInStex() + i0StexStinEcna;
6716  if( i_xgeo >= 0 && i_xgeo < SizeForPlot )
6717  {
6718  histo_for_plot[i_xgeo] = read_histo[i0StexStinEcna];
6719  }
6720  else
6721  {
6722  cout << "!TEcnaHistos::ViewHisto(...)> <EB> i_xgeo = " << i_xgeo
6723  << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << endl;
6724  }
6725  }
6726  //...................................... EE (ViewHisto)
6727  //-------> Dee order: D4, D3, D2, D1
6728  if( fFlagSubDet == "EE" )
6729  {
6730  Int_t DeeOffset = 0;
6731  Int_t DSOffset = 0;
6732 
6733  Int_t DeeNumber = iStasStex+1;
6734  Int_t n1DeeSCEcna = i0StexStinEcna+1;
6735 
6736  //................................................ Dee offset
6737  if( DeeNumber == 3 ){DeeOffset += fEcal->MaxSCForConsInDee();} // 149
6738  if( DeeNumber == 2 ){DeeOffset += 3*fEcal->MaxSCForConsInDee()-1;} // 446
6739  if( DeeNumber == 1 ){DeeOffset += 4*fEcal->MaxSCForConsInDee()-1;} // 595
6740 
6741  //................................................ Data Sector offset (ViewHisto, Stas)
6742  Int_t StexDataSector = fEcalNumbering->GetDSFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
6743  //.... returns 0 if n1DeeSCEcna corresponds to an empty "ECNA-SC"
6744 
6745  //................................................ SC final coordinate (ViewHisto, Stas)
6746  Int_t StexDSStin = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
6747  //--> return StexDSStin = 25 (not 3) for n1DeeSCEcna = 32
6748  //--> return StexDSStin = 14 (not 21) for n1DeeSCEcna = 29
6749  //--> return StexDSStin = -1 for n1DeeSCEcna = 10 and n1DeeSCEcna = 11
6750 
6751  if( StexDataSector >= 1 && StexDataSector <= 9 )
6752  {
6753  if( DeeNumber == 4 ) // Sectors 1,2,3,4,5a
6754  {
6755  for(Int_t is=2; is<=5; is++)
6756  { if( StexDataSector >= is )
6757  {Int_t ism = is-1; DSOffset += fEcalNumbering->GetMaxSCInDS(ism);}}
6758  }
6759 
6760  if( DeeNumber == 3 ) // Sectors 5b,6,7,8,9
6761  {
6762  if( StexDataSector >= 6 )
6763  {DSOffset += fEcalNumbering->GetMaxSCInDS(5)/2;}
6764  for(Int_t is=7; is<=9; is++)
6765  { if( StexDataSector >= is )
6766  {Int_t ism = is-1; DSOffset += fEcalNumbering->GetMaxSCInDS(ism);}}
6767  }
6768 
6769  if( DeeNumber == 2 ) // Sectors 9,8,7,6,5a
6770  {
6771  if( StexDataSector >= 6 )
6772  {DSOffset -= fEcalNumbering->GetMaxSCInDS(5)/2;}
6773  for(Int_t is=7; is<=9; is++)
6774  {if( StexDataSector >= is )
6775  {Int_t ism = is-1; DSOffset -= fEcalNumbering->GetMaxSCInDS(ism);}}
6776  }
6777 
6778  if( DeeNumber == 1 ) // Sectors 5b,4,3,2,1
6779  {
6780  for(Int_t is=2; is<=5; is++)
6781  { if( StexDataSector >= is )
6782  {Int_t ism = is-1; DSOffset -= fEcalNumbering->GetMaxSCInDS(ism);}}
6783  }
6784 
6785  if( StexDSStin >=1 && StexDSStin <= fEcalNumbering->GetMaxSCInDS(StexDataSector) )
6786  {
6787  if( DeeNumber == 4 ) // Sectors 1,2,3,4,5a
6788  {
6789  if(StexDataSector != 5)
6790  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6791  if( StexDataSector == 5)
6792  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6793  }
6794  if( DeeNumber == 3 ) // Sectors 5b,6,7,8,9
6795  {
6796  if(StexDataSector != 5)
6797  {i_xgeo = DeeOffset + DSOffset + (StexDSStin - 1);}
6798  if( StexDataSector == 5)
6799  {i_xgeo = DeeOffset + DSOffset + (StexDSStin-17) - 1;}
6800  }
6801  if( DeeNumber == 2 ) // Sectors 5a,6,7,8,9
6802  {
6803  if(StexDataSector != 5)
6804  {i_xgeo = DeeOffset + DSOffset
6805  - fEcalNumbering->GetMaxSCInDS(StexDataSector) + StexDSStin;}
6806  if( StexDataSector == 5)
6807  {i_xgeo = DeeOffset + DSOffset
6808  - fEcalNumbering->GetMaxSCInDS(StexDataSector)/2 + StexDSStin;}
6809  }
6810  if( DeeNumber == 1 ) // Sectors 1,2,3,4,5b
6811  {
6812  if(StexDataSector != 5)
6813  {i_xgeo = DeeOffset + DSOffset
6814  - fEcalNumbering->GetMaxSCInDS(StexDataSector) + StexDSStin;}
6815  if( StexDataSector == 5)
6816  {i_xgeo = DeeOffset + DSOffset
6817  - fEcalNumbering->GetMaxSCInDS(StexDataSector)/2 +(StexDSStin-17);}
6818  }
6819 
6820  }// end of if(StexDSStin >=1 && StexDSStin <= fEcalNumbering->GetMaxSCInDS(StexDataSector))
6821  else
6822  {
6823  cout << "!TEcnaHistos::ViewHisto(...)> <EE> StexDSStin = " << StexDSStin
6824  << ". OUT OF RANGE ( range = [1,"
6825  << fEcalNumbering->GetMaxSCInDS(StexDataSector)
6826  << "]. DeeNumber = " << DeeNumber
6827  << ", n1DeeSCEcna = " << n1DeeSCEcna
6828  << ", StexDataSector = " << StexDataSector
6829  << ", i_xgeo = " << i_xgeo << endl;
6830  }
6831  }// end of if( StexDataSector >= 1 && StexDataSector <= 9 )
6832  else
6833  {
6834  //cout << "!TEcnaHistos::ViewHisto(...)> <EE> StexDataSector = " << StexDataSector
6835  // << ". OUT OF RANGE ( range = [1,9]. DeeNumber = " << DeeNumber
6836  // << ", n1DeeSCEcna = " << n1DeeSCEcna
6837  // << ", i_xgeo = " << i_xgeo << endl;
6838  }
6839  //......................................... transfert read_histo -> histo_for_plot
6840  if( i_xgeo >= -1 && i_xgeo < SizeForPlot )
6841  {
6842  // special treatement for not connected & mixed SC's
6843  if( n1DeeSCEcna == 29 || n1DeeSCEcna == 32 || // 261a, 207c, 268a, 178c
6844  // [ 14a, 25c, 21a, 3c]
6845  n1DeeSCEcna == 144 || n1DeeSCEcna == 165 || // 261c, 261b [14c, 14b]
6846  n1DeeSCEcna == 176 || n1DeeSCEcna == 193 || // 207a, 207b [25a, 25b]
6847  n1DeeSCEcna == 60 || n1DeeSCEcna == 119 || // 182a, 182b [30a, 30b]
6848  n1DeeSCEcna == 102 || n1DeeSCEcna == 123 || // 268c, 268b [21c, 21b]
6849  n1DeeSCEcna == 138 || n1DeeSCEcna == 157 ) // 178a, 178b [ 3a, 3b]
6850  {
6851  //--------------- DSSC 14
6852  if( n1DeeSCEcna == 29 && i_xgeo >= 0 )
6853  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)5.;}
6854  if( (n1DeeSCEcna == 144 || n1DeeSCEcna == 165) && i_xgeo >= 0 )
6855  {histo_for_plot[i_xgeo] +=
6856  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)25.;}
6857 
6858  //--------------- DSSC 25
6859  if( n1DeeSCEcna == 32 && i_xgeo >= 0 )
6860  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)5.;}
6861  if( (n1DeeSCEcna == 176 || n1DeeSCEcna == 193) && i_xgeo >= 0 )
6862  {histo_for_plot[i_xgeo] +=
6863  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)25.;}
6864 
6865  //--------------- DSSC 30
6866  if( (n1DeeSCEcna == 60 || n1DeeSCEcna == 119) && i_xgeo >= 0 )
6867  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna]/(Double_t)2.;}
6868 
6869  //--------------- DSSC 21 (Add SC translated at 10-1 only once, i_xgeo = -1 accepted)
6870  if( n1DeeSCEcna == 102 )
6871  {histo_for_plot[i_xgeo] += read_histo[9]/(Double_t)21.
6872  + read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6873  if( n1DeeSCEcna == 123 && i_xgeo >= 0 )
6874  {histo_for_plot[i_xgeo] +=
6875  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6876 
6877  //--------------- DSSC 3 (Add SC translated at 11-1 only once, i_xgeo = -1 accepted)
6878  if( n1DeeSCEcna == 138 )
6879  {histo_for_plot[i_xgeo] += read_histo[10]/(Double_t)21.
6880  + read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6881  if( n1DeeSCEcna == 157 && i_xgeo >= 0 )
6882  {histo_for_plot[i_xgeo] +=
6883  read_histo[i0StexStinEcna]*(Double_t)10./(Double_t)21.;}
6884  }
6885  else
6886  {
6887  if( i_xgeo >= 0 )
6888  {histo_for_plot[i_xgeo] += read_histo[i0StexStinEcna];} // standard treatment
6889  }
6890  } // end of if( i_xgeo >= -1 && i_xgeo < SizeForPlot )
6891  else
6892  {
6893  //cout << "!TEcnaHistos::ViewHisto(...)> <EE> i_xgeo = " << i_xgeo
6894  // << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << endl;
6895  }
6896  }// end of if( fFlagSubDet == "EE" )
6897  }// end of for(Int_t i0StexStinEcna=0; i0StexStinEcna<fEcal->MaxStinEcnaInStex(); i0StexStinEcna++)
6898  }
6899  else
6900  {
6901  cout << "!TEcnaHistos::ViewHisto(...)> "
6902  << " Data not available for " << fFapStexName << " " << iStasStex+1
6903  << " (Quantity not present in the ROOT file)" << endl;
6904  }
6905  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE ) (ViewHisto/Stas)
6906  else
6907  {
6908  fStatusFileFound = kFALSE;
6909 
6910  cout << "!TEcnaHistos::ViewHisto(...)> "
6911  << " Data not available for " << fFapStexName << " " << iStasStex+1
6912  << " (ROOT file not found)" << endl;
6913  }
6914 
6915  if( fFapNbOfEvts <= xFapNbOfEvts[iStasStex] ){fFapNbOfEvts = xFapNbOfEvts[iStasStex];}
6916 
6917  } // end of for(Int_t iStasStex=0; iStasStex<fEcal->MaxStexInStas(); iStasStex++)
6918 
6919  //delete [] NOFE_int; NOFE_int = 0; fCdelete++;
6920  delete [] xFapNbOfEvts; xFapNbOfEvts = 0; fCdelete++;
6921 
6922  if( CounterExistingFile > 0 && CounterDataExist > 0 ){OKPlot = 1;}
6923 
6924  } // end of if( fFapStexNumber == 0 )
6925 
6926  //---------------------------------------------------------------------------- (ViewHisto [Stex])
6927 
6928  if( fFapStexNumber > 0 )
6929  {
6930  Bool_t OKFileExists = kFALSE ;
6931  Bool_t ok_view_histo = kFALSE;
6932 
6933  if( arg_AlreadyRead == 0 )
6934  {
6940 
6941  if ( fMyRootFile->LookAtRootFile() == kTRUE ){OKFileExists = kTRUE;} // (ViewHisto, Stex)
6942 
6943  if( OKFileExists == kTRUE )
6944  {
6946  fp_name_short = fMyRootFile->GetRootFileNameShort();
6947  // cout << "*TEcnaHistos::ViewHisto(...)> Data are analyzed from file ----> "
6948  // << fp_name_short << endl;
6949 
6953 
6954  ok_view_histo =
6955  GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode.Data());
6956  }
6957  }
6958 
6959  if( arg_AlreadyRead >= 1 )
6960  {
6961  OKFileExists = kTRUE; ok_view_histo = kTRUE;
6962  }
6963 
6964  if( OKFileExists == kTRUE )
6965  {
6966  fStatusFileFound = kTRUE;
6967  //---------------------------------------------------------------------------- (ViewHisto [Stex])
6968 
6969  if( ok_view_histo == kTRUE )
6970  {
6971  //------------ EB or EE with SampGlobal or SampProj (histo_for_plot = read_histo)
6972  if( fFlagSubDet == "EB" ||
6973  ( fFlagSubDet == "EE" && ( HistoType == "SampGlobal" || HistoType == "SampProj" ) ) )
6974  {
6975  histo_for_plot = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
6976  SizeForPlot, SizeForRead,
6977  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
6978  if( i_data_exist > 0 ){OKPlot = 1;}
6979  if( OKPlot == 1 && opt_plot == "ASCII" && ( HistoType == "Global" || HistoType == "Proj" ) )
6980  {WriteHistoAscii(HistoCode.Data(), SizeForPlot, histo_for_plot);}
6981  }
6982 
6983  //------------ EE except for SampGlobal and SampProj) (histo_for_plot # read_histo)
6984  if( fFlagSubDet == "EE" && !( HistoType == "SampGlobal" || HistoType == "SampProj" ) )
6985  {
6986  TVectorD read_histo(SizeForRead);
6987  for(Int_t i=0; i<SizeForRead; i++){read_histo(i)=(Double_t)0.;}
6988 
6989  read_histo = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
6990  SizeForRead, SizeForRead,
6991  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
6992  if( i_data_exist > 0 ){OKPlot = 1;}
6993  if( OKPlot == 1 && opt_plot == "ASCII" )
6994  {
6995  WriteHistoAscii(HistoCode.Data(), fEcal->MaxCrysEcnaInDee(), read_histo);
6996  }
6997  if( OKPlot == 1 && opt_plot != "ASCII" )
6998  {
6999  //..................... Build histo_for_plot from read_histo (ViewHisto [Stex])
7000  Int_t DeeNumber = fFapStexNumber;
7001  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
7002 
7003  //%%%%%%%%%%%%%%%%%%%%%%%%%%%% LOOP ON Echa (Ecna) %%%%%%%%%%%%%%%%%%%%%%%%%% (ViewHisto [Stex])
7004  for(Int_t i0DeeEcha=0; i0DeeEcha<fEcal->MaxCrysEcnaInDee(); i0DeeEcha++)
7005  {
7006  Int_t n1SCEcha = fEcalNumbering->Get1SCEchaFrom0DeeEcha(i0DeeEcha);
7007  Int_t n1DeeSCEcna = i0DeeEcha/fEcal->MaxCrysInSC()+1;
7008 
7009  Int_t DataSector = fEcalNumbering->GetDSFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
7010  Int_t SC_in_DS = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna, n1SCEcha);
7011 
7012  Int_t i_xgeo = -1;
7013 
7014  if( n1SCEcha >= 1 && n1SCEcha <= fEcal->MaxCrysInSC() )
7015  {
7016  if( n1DeeSCEcna >= 1 && n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
7017  {
7018  if( DataSector >= 1 && DataSector <= 9 )
7019  {
7020  if( SC_in_DS >= 1 && SC_in_DS <= fEcalNumbering->GetMaxSCInDS(DataSector) )
7021  {
7022  if( read_histo[i0DeeEcha] != 0 )
7023  {
7024  //................................... Data Sector offset
7025  Int_t DSOffset = GetDSOffset(DeeNumber, DataSector);
7026 
7027  //........................ Super-Crystal (SC) offset (ViewHisto [Stex])
7028  Int_t SCOffset = GetSCOffset(DeeNumber, DataSector, SC_in_DS);
7029 
7030  //........................ Xtal final bin
7031  Int_t nSCCons = fEcalNumbering->
7032  GetDeeSCConsFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna, n1SCEcha);
7033 
7034  Int_t n1FinalSCEcha = n1SCEcha;
7035 
7036  if( fEcalNumbering->GetSCType(nSCCons) == "NotConnected" ||
7037  fEcalNumbering->GetSCType(nSCCons) == "NotComplete" )
7038  { //----- not complete and not connected SC's
7039  // no i_xgeo value if SC = 14 or 25 and channel 11
7040  if( !( (SC_in_DS == 14 || SC_in_DS == 25 ) && n1SCEcha == 11 ) )
7041  {
7042  n1FinalSCEcha =
7043  ModifiedSCEchaForNotConnectedSCs(DeeNumber, nSCCons, SC_in_DS,
7044  n1DeeSCEcna, n1SCEcha);
7045  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
7046  }
7047  // change SC 14 -> 21 and channel 11 -> 21
7048  if( SC_in_DS == 14 && n1SCEcha == 11 )
7049  {
7050  SCOffset = GetSCOffset(DeeNumber, DataSector, 21);
7051  n1FinalSCEcha = 21;
7052  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
7053  }
7054  // change SC 25 -> 3 for channel 11 -> 21
7055  if( SC_in_DS == 25 && n1SCEcha == 11 )
7056  {
7057  SCOffset = GetSCOffset(DeeNumber, DataSector, 3);
7058  n1FinalSCEcha = 21;
7059  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
7060  }
7061  }
7062  else
7063  { //----------- Complete SCs
7064  i_xgeo = DSOffset + SCOffset + (n1FinalSCEcha-1);
7065  }
7066 
7067  histo_for_plot_memo[i_xgeo]++;
7068  if( histo_for_plot_memo[i_xgeo] >= 2 )
7069  {
7070  cout << "! histo_memo[" << i_xgeo
7071  << "] = " << histo_for_plot_memo[i_xgeo]
7072  << ", nSCCons = " << nSCCons
7073  << ", SC_in_DS = " << SC_in_DS
7074  << ", DSOffset = " << DSOffset
7075  << ", SCOffset = " << SCOffset
7076  << ", n1DeeSCEcna = " << n1DeeSCEcna
7077  << ", n1SCEcha = " << n1SCEcha
7078  << ", n1FinalSCEcha = " << n1FinalSCEcha << endl;
7079  }
7080  //.............................. transfert read_histo -> histo_for_plot
7081  if( i_xgeo >= 0 && i_xgeo < SizeForPlot )
7082  {
7083  if( n1FinalSCEcha > 0 )
7084  {histo_for_plot[i_xgeo] += read_histo[i0DeeEcha];}
7085  }
7086  else
7087  {
7088  cout << "!TEcnaHistos::ViewHisto(...)> <EE> i_xgeo = " << i_xgeo
7089  << ". OUT OF RANGE ( range = [0,"<< SizeForPlot << "] " << endl;
7090  }
7091  } // end of if( read_histo[i0DeeEcha] > 0 )
7092  } // end of if( SC_in_DS >= 1 && SC_in_DS <= fEcalNumbering->GetMaxSCInDS(DataSector) )
7093  else
7094  {
7095  cout << "!TEcnaHistos::ViewHisto(...)> <EE> SC_in_DS = " << SC_in_DS
7096  << ". OUT OF RANGE ( range = [1,"
7097  << fEcalNumbering->GetMaxSCInDS(DataSector) << "] "
7098  << ", DataSector = " << DataSector
7099  << ", n1DeeSCEcna = " << n1DeeSCEcna
7100  << ", n1SCEcha = " << n1SCEcha
7101  << ", i0DeeEcha = " << i0DeeEcha
7102  << endl;
7103  }
7104  } // end of if( DataSector >= 1 && DataSector <= 9 )
7105  else
7106  {
7107  if( DataSector != 0 )
7108  {
7109  cout << "!TEcnaHistos::ViewHisto(...)> <EE> DataSector = " << DataSector
7110  << ". OUT OF RANGE ( range = [1,9] "
7111  << ", n1DeeSCEcna = " << n1DeeSCEcna
7112  << ", n1SCEcha = " << n1SCEcha
7113  << ", i0DeeEcha = " << i0DeeEcha
7114  << endl;
7115  }
7116  }
7117  } // end of if( n1DeeSCEcna >= 1 && n1DeeSCEcna <= fEcal->MaxSCEcnaInDee() )
7118  else
7119  {
7120  cout << "!TEcnaHistos::ViewHisto(...)> <EE> n1DeeSCEcna = " << n1DeeSCEcna
7121  << ". OUT OF RANGE ( range = [1,"<< fEcal->MaxSCEcnaInDee() << "] "
7122  << ", n1SCEcha = " << n1SCEcha
7123  << ", i0DeeEcha = " << i0DeeEcha
7124  << endl;
7125  }
7126  } // end of if(n1SCEcha >= 1 && n1SCEcha <= fEcal->MaxCrysInSC() )
7127  else
7128  {
7129  cout << "!TEcnaHistos::ViewHisto(...)> <EE> n1SCEcha = " << n1SCEcha
7130  << ". OUT OF RANGE ( range = [1,"<< fEcal->MaxCrysInSC() << "] "
7131  << ", i0DeeEcha = " << i0DeeEcha
7132  << endl;
7133  }
7134  }
7135  } // end of if( OKPlot == 1 && opt_plot != "ASCII" )
7136  } // end of if(fFlagSubDet == "EE")
7137  } // end of if(ok_view_histo == kTRUE)
7138  else
7139  {
7140  cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7141  << " ok_view_histo != kTRUE " << fTTBELL << endl;
7142  }
7143  } // end of if(fMyRootFile->LookAtRootFile() == kTRUE)
7144  else
7145  {
7146  fStatusFileFound = kFALSE;
7147 
7148  cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7149  << " ROOT file not found" << fTTBELL << endl;
7150  }
7151  } // end of if(fFapStexNumber > 0)
7152  } // end of if( HistoType == "Global" || HistoType == "Proj" || HistoType == "SampGlobal" || HistoType == "SampProj" )
7153  else
7154  {
7155  //--------------------------------------------------------------------- not Global-Proj Histo
7156  if( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) )
7157  {
7158  Bool_t OKFileExists = kFALSE;
7159 
7160  if( !(arg_AlreadyRead > 1) )
7161  {
7167  OKFileExists = fMyRootFile->LookAtRootFile();
7168  if( OKFileExists == kTRUE ){fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);}
7169  }
7170  else
7171  {
7172  OKFileExists = kTRUE;
7173  }
7174 
7175  if( OKFileExists == kTRUE ) // (ViewHisto, not Global-Proj)
7176  {
7177  fStatusFileFound = kTRUE;
7178 
7179  for(Int_t i=0; i<SizeForPlot; i++){histo_for_plot[i]=(Double_t)0;}
7180 
7181  histo_for_plot = GetHistoValues(arg_read_histo, arg_AlreadyRead, fMyRootFile, HistoCode.Data(),
7182  SizeForPlot, SizeForRead,
7183  StexStin_A, i0StinEcha, i0Sample, i_data_exist);
7184 
7189 
7190  if( i_data_exist > 0 ){OKPlot = 1;}
7191  }
7192  else
7193  {
7194  cout << "!TEcnaHistos::ViewHisto(...)> *ERROR* =====> "
7195  << " ROOT file not found" << fTTBELL << endl;
7196  }
7197  }
7198  else
7199  {
7200  cout << "!TEcnaHistos::ViewHisto(...)> " << fFapStexName.Data()
7201  << " = " << fFapStexNumber << ". Out of range (range = [1,"
7202  << fEcal->MaxStexInStas() << "]) " << fTTBELL << endl;
7203  }
7204  }
7205 
7206  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PLOT accepted
7207 
7208  if( ( HistoType == "Global" || HistoType == "Proj" ||
7209  HistoType == "SampGlobal" || HistoType == "SampProj" ||
7210  HistoType == "H1Basic" || HistoType == "H1BasicProj" ) ||
7211  ( !( HistoType == "Global" || HistoType == "Proj" ||
7212  HistoType == "SampGlobal" || HistoType == "SampProj" ||
7213  HistoType == "H1Basic" || HistoType == "H1BasicProj" ) &&
7214  ( (fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas()) ) ) )
7215  {
7216  if( opt_plot != "ASCII" )
7217  {
7218  if( OKPlot > 0 )
7219  {
7220  //... Ymin and ymax default values will be taken if fFlagUserHistoMin/Max = "OFF"
7221  // and if "Free" for "SAME" and "SAME n" options
7222  if( (opt_plot == fOnlyOnePlot && ( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) ) ||
7223  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7224  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7225  {
7226  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
7227  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
7228  }
7229 
7230  //==== 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)
7231  //
7232  // must be done before booking because of the x <-> y permutation in case of "Proj"
7233  //
7234  //-----------------------------------------------------------------------------------------
7235  //
7236  // CASE: HistoType == "Proj" OR HistoType == "SampProj"
7237  //
7238  // Xinf and Xsup must be calculated from ymin and ymax
7239  // of the direct ("Global") histo
7240  //
7241  //-----------------------------------------------------------------------------------------
7242  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" )
7243  {
7244  TString HistoCodi = HistoCode; // HistoCodi = direct histo
7245 
7246  if( HistoCode == "D_NOE_ChDs" ){HistoCodi = "D_NOE_ChNb";}
7247  if( HistoCode == "D_Ped_ChDs" ){HistoCodi = "D_Ped_ChNb";}
7248  if( HistoCode == "D_TNo_ChDs" ){HistoCodi = "D_TNo_ChNb";}
7249  if( HistoCode == "D_MCs_ChDs" ){HistoCodi = "D_MCs_ChNb";}
7250  if( HistoCode == "D_LFN_ChDs" ){HistoCodi = "D_LFN_ChNb";}
7251  if( HistoCode == "D_HFN_ChDs" ){HistoCodi = "D_HFN_ChNb";}
7252  if( HistoCode == "D_SCs_ChDs" ){HistoCodi = "D_SCs_ChNb";}
7253  if( HistoCode == "D_MSp_SpDs" ){HistoCodi = "D_MSp_SpNb";}
7254  if( HistoCode == "D_SSp_SpDs" ){HistoCodi = "D_SSp_SpNb";}
7255  if( HistoCode == "D_Adc_EvDs" ){HistoCodi = "D_Adc_EvNb";}
7256 
7257  TString TitleHisto = ";";
7258  if( opt_plot != fSameOnePlot )
7259  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCodi);}
7260 
7261  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
7262 
7263  //--------------------------------------------------------------------------- (ViewHisto)
7264  //
7265  // fOnlyOnePlot => compute Xinf and Xsup at each time
7266  // fSeveralPlot => compute Xinf and Xsup once when flag = "Free" for each HistoCode
7267  // fSameOnePlot => compute Xinf and Xsup once
7268  //
7269  //--------------------------------------------------------------------------------------
7270  if( (opt_plot == fOnlyOnePlot && ( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) ) ||
7271  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, fSeveralPlot) == "Free" ) ||
7272  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, fSameOnePlot) == "Free" ) )
7273  {
7274  Double_t XinfProj =(Double_t)0;
7275  Double_t XsupProj =(Double_t)0;
7276 
7277  //...................................................................... (ViewHisto)
7278  if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
7279  {
7280  Int_t HisSiza = GetHistoSize(HistoCodi.Data(), "plot");
7281  Int_t ReadHisSiza = HisSiza;
7282  //.............................. prepa direct histogram booking (ViewHisto)
7283  Axis_t xinf_hisa = GetHistoXinf(HistoCodi.Data(), HisSiza, opt_plot);
7284  Axis_t xsup_hisa = GetHistoXsup(HistoCodi.Data(), HisSiza, opt_plot);
7285  Int_t nb_binxa = GetHistoNumberOfBins(HistoCodi.Data(), HisSiza);
7286  //.............................. direct ("Global") histogram booking (ViewHisto)
7287  TH1D* h_hisa =
7288  new TH1D("histoa", TitleHisto.Data(), nb_binxa, xinf_hisa, xsup_hisa); fCnewRoot++;
7289  h_hisa->Reset();
7290  //.... direct histogram filling to get its ymin (=> xminProj) and ymax (=> xmaxProj)
7291  FillHisto(h_hisa, histo_for_plot, HistoCodi.Data(), ReadHisSiza);
7292  //... Get direct histo ymin and/or ymax and keep them as xinf and xsup
7293  // in memo for the plotted histo
7294  XinfProj = fUserHistoMin;
7295  XsupProj = fUserHistoMax;
7296  if( fFlagUserHistoMin == "AUTO" ){XinfProj = h_hisa->GetMinimum();}
7297  if( fFlagUserHistoMax == "AUTO" ){XsupProj = h_hisa->GetMaximum();}
7298  XsupProj += (XsupProj-XinfProj)*fCnaParHistos->GetMarginAutoMinMax(); // to see the last bin
7299  h_hisa->Delete(); h_hisa = 0; fCdeleteRoot++;
7300  } // end of if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
7301  else
7302  {
7303  if( fFlagUserHistoMin == "OFF" )
7304  {
7305  SetYminMemoFromValue(HistoCode.Data(),
7306  fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
7307  XinfProj = GetYminValueFromMemo(HistoCode.Data());
7308  }
7309 
7310  if( fFlagUserHistoMax == "OFF" )
7311  {
7312  SetYmaxMemoFromValue(HistoCode.Data(),
7313  fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
7314  XsupProj = GetYmaxValueFromMemo(HistoCode.Data());
7315  }
7316  if( fFlagUserHistoMin == "ON" ){XinfProj = fUserHistoMin;}
7317  if( fFlagUserHistoMax == "ON" ){XsupProj = fUserHistoMax;}
7318  }
7319 
7320  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
7321  {
7322  SetXinfMemoFromValue(HistoCode.Data(), XinfProj);
7323  SetXsupMemoFromValue(HistoCode.Data(), XsupProj);
7324  }
7325  else
7326  {
7327  SetXinfMemoFromValue(XinfProj);
7328  SetXsupMemoFromValue(XsupProj);
7329  }
7330  } // end of if( (opt_plot == fOnlyOnePlot) ||
7331  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7332  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7333  } // end of if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" )
7334 
7335  //=============== H I S T O B O O K I N G A N D F I L L I N G ======== (ViewHisto)
7336  //.............................. prepa histogram booking (ViewHisto)
7337 
7338  //.......... Set number of bins: forcing to fNbBinsProj if "HistoType" == "Proj"
7339  Int_t xNbBins = GetHistoNumberOfBins(HistoCode.Data(), SizeForPlot);
7340 
7341  Double_t cXinf = (Double_t)0.;
7342  Double_t cXsup = (Double_t)0.;
7343 
7344  //.......... Set Xinf and Xsup at each time because of simultaneous SAME options
7345  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj")
7346  {
7347  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
7348  {
7349  cXinf = GetXinfValueFromMemo(HistoCode.Data());
7350  cXsup = GetXsupValueFromMemo(HistoCode.Data());
7351  }
7352  else
7353  {
7354  cXinf = GetXinfValueFromMemo();
7355  cXsup = GetXsupValueFromMemo();
7356  }
7357  }
7358  else
7359  {
7360  cXinf = GetHistoXinf(HistoCode.Data(), SizeForPlot, opt_plot);
7361  cXsup = GetHistoXsup(HistoCode.Data(), SizeForPlot, opt_plot);
7362  }
7363 
7364  //.............................. histogram booking (ViewHisto)
7365  Axis_t xinf_his = cXinf; // ancillary variables since no const in arguments of TH1D
7366  Axis_t xsup_his = cXsup;
7367  Int_t nb_binx = xNbBins;
7368 
7369  TString TitleHisto = ";";
7370  if( opt_plot != fSameOnePlot )
7371  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCode.Data());}
7372  TH1D* h_his0 = new TH1D("histo", TitleHisto.Data(), nb_binx, xinf_his, xsup_his); fCnewRoot++;
7373  h_his0->Reset();
7374  //............................... histogram filling
7375  FillHisto(h_his0, histo_for_plot, HistoCode.Data(), SizeForPlot);
7376 
7377  //=============== H I S T O Y M I N / Y M A X M A N A G E M E N T =========== (ViewHisto)
7378  if( opt_plot == fOnlyOnePlot ||
7379  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7380  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7381  {
7382  if( opt_plot == fSameOnePlot ){fHistoCodeFirst = HistoCode;} // registration of first HistoCode
7383  //................................. Automatic min and/or max for other options than "Proj"
7384  if( HistoType != "Proj" && HistoType != "SampProj" && HistoType != "H1BasicProj" )
7385  {
7386  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
7387  //................................. user's min and/or max
7388  if( fFlagUserHistoMin == "ON" )
7389  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
7390  if( fFlagUserHistoMax == "ON" )
7391  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
7392  //................................. automatic min and/or max
7393  if( fFlagUserHistoMin == "AUTO" )
7394  {
7395  //.............. no bottom margin if ymin = 0
7396  Double_t ymin = GetYminFromHistoFrameAndMarginValue(h_his0, (Double_t)0.);
7397  if( ymin != (Double_t)0. )
7398  {ymin =
7400  SetYminMemoFromValue(HistoCode.Data(),ymin);
7401  fFlagUserHistoMin = "OFF";
7402  }
7403  if( fFlagUserHistoMax == "AUTO" )
7404  {
7405  Double_t ymax =
7407  SetYmaxMemoFromValue(HistoCode.Data(),ymax);
7408  fFlagUserHistoMax = "OFF";
7409  }
7410  //................................. Set YMin and YMax of histo (ViewHisto)
7411  SetYminMemoFromPreviousMemo(HistoCode);
7412  SetYmaxMemoFromPreviousMemo(HistoCode);
7413  } // end of if( HistoType != "Proj" && HistoType != "SampProj" && HistoType != "H1BasicProj" )
7414 
7415  //.......... Find maximum in case of Proj (LIN scale only) // PS: EvolProj => in ViewHistime
7416  if( ( HistoType == "Proj" || HistoType == "SampProj" ||
7417  HistoType == "H1BasicProj" ) && fFlagScaleY == "LIN" )
7418  {
7420  (HistoCode.Data(),
7422  }
7423  } // end of if( opt_plot == fOnlyOnePlot ||
7424  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
7425  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
7426 
7427  //--- Set ymin and ymax to the first HistoCode values for option SAME n
7428  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7429  {
7430  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
7431  SetYminMemoFromValue(HistoCode.Data(), ymin);
7432 
7433  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
7434  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
7435  }
7436 
7437  //... histogram set ymin and ymax and consequently margin at top of the plot
7438  Int_t xFlagAutoYsupMargin = SetHistoFrameYminYmaxFromMemo(h_his0, HistoCode);
7439 
7440  //==================================== P L O T ============================== (ViewHisto)
7441  HistoPlot(h_his0, SizeForPlot, xinf_his, xsup_his,
7442  HistoCode.Data(), HistoType.Data(),
7443  StexStin_A, i0StinEcha, i0Sample,
7444  opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
7445  xFlagAutoYsupMargin);
7446  h_his0->Delete(); h_his0 = 0; fCdeleteRoot++;
7447  //===========================================================================
7448 
7449  //--- Recover ymin and ymax from user's values in option SAME n
7450  if( (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy") )
7451  {
7452  SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
7453  SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
7454  }
7455  } // end of if( OKPlot > 0 )
7456  else
7457  {
7458  cout << "!TEcnaHistos::ViewHisto(...)> Histo not available."
7459  << fTTBELL << endl;
7460  }
7461  }
7462  }
7463  } // end of if( OKHisto == 1 )
7464 
7465 } // end of ViewHisto(...)
7466 
7467 //------------------------------------------------------------------------------------
7468 Int_t TEcnaHistos::GetDSOffset(const Int_t& DeeNumber, const Int_t& DataSector)
7469 {
7470  // gives the DataSector Offset on 1D histos for option "Global"
7471 
7472  Int_t DSOffset = 0;
7473 
7474  if( DeeNumber == 4 )
7475  {
7476  if( DataSector >= 1 ){}
7477  if( DataSector >= 2 ){DSOffset += fEcalNumbering->GetMaxSCInDS(1)*fEcal->MaxCrysInSC();}
7478  if( DataSector >= 3 ){DSOffset += fEcalNumbering->GetMaxSCInDS(2)*fEcal->MaxCrysInSC();}
7479  if( DataSector >= 4 ){DSOffset += fEcalNumbering->GetMaxSCInDS(3)*fEcal->MaxCrysInSC();}
7480  if( DataSector >= 5 ){DSOffset += fEcalNumbering->GetMaxSCInDS(4)*fEcal->MaxCrysInSC();}
7481  }
7482  if( DeeNumber == 3 )
7483  {
7484  if( DataSector >= 5 ){}
7485  if( DataSector >= 6 ){DSOffset += (fEcalNumbering->GetMaxSCInDS(5)/2)*fEcal->MaxCrysInSC();}
7486  if( DataSector >= 7 ){DSOffset += fEcalNumbering->GetMaxSCInDS(6)*fEcal->MaxCrysInSC();}
7487  if( DataSector >= 8 ){DSOffset += fEcalNumbering->GetMaxSCInDS(7)*fEcal->MaxCrysInSC();}
7488  if( DataSector >= 9 ){DSOffset += fEcalNumbering->GetMaxSCInDS(8)*fEcal->MaxCrysInSC();}
7489  }
7490  if( DeeNumber == 2 )
7491  {
7492  if( DataSector <= 9 ){}
7493  if( DataSector <= 8 ){DSOffset += fEcalNumbering->GetMaxSCInDS(9)*fEcal->MaxCrysInSC();}
7494  if( DataSector <= 7 ){DSOffset += fEcalNumbering->GetMaxSCInDS(8)*fEcal->MaxCrysInSC();}
7495  if( DataSector <= 6 ){DSOffset += fEcalNumbering->GetMaxSCInDS(7)*fEcal->MaxCrysInSC();}
7496  if( DataSector <= 5 ){DSOffset += fEcalNumbering->GetMaxSCInDS(6)*fEcal->MaxCrysInSC();}
7497  }
7498  if( DeeNumber == 1 )
7499  {
7500  if( DataSector <= 5 ){}
7501  if( DataSector <= 4 ){DSOffset += (fEcalNumbering->GetMaxSCInDS(5)/2)*fEcal->MaxCrysInSC();}
7502  if( DataSector <= 3 ){DSOffset += fEcalNumbering->GetMaxSCInDS(4)*fEcal->MaxCrysInSC();}
7503  if( DataSector <= 2 ){DSOffset += fEcalNumbering->GetMaxSCInDS(3)*fEcal->MaxCrysInSC();}
7504  if( DataSector <= 1 ){DSOffset += fEcalNumbering->GetMaxSCInDS(2)*fEcal->MaxCrysInSC();}
7505  }
7506  return DSOffset;
7507 }
7508 //------------------------------------------------------------------------------------
7509 Int_t TEcnaHistos::GetSCOffset(const Int_t& DeeNumber, const Int_t& DataSector, const Int_t& SC_in_DS)
7510 {
7511  // gives the SC (Super-Crystal) Offset on 1D histos for option "Global"
7512 
7513  Int_t SCOffset = 0;
7514 
7515  if( DeeNumber == 1 || DeeNumber == 3 )
7516  {
7517  if( DataSector == 5 ){SCOffset += ((SC_in_DS-17)-1)*fEcal->MaxCrysInSC();}
7518  if( DataSector != 5 ){SCOffset += (SC_in_DS-1)*fEcal->MaxCrysInSC();}
7519  }
7520 
7521  if( DeeNumber == 2 || DeeNumber == 4 ){SCOffset += (SC_in_DS-1)*fEcal->MaxCrysInSC();}
7522 
7523  return SCOffset;
7524 }
7525 //------------------------------------------------------------------------------------
7526 Int_t TEcnaHistos::ModifiedSCEchaForNotConnectedSCs(const Int_t& n1DeeNumber,
7527  const Int_t& nSCCons, const Int_t& SC_in_DS,
7528  const Int_t& n1DeeSCEcna, const Int_t& n1SCEcha)
7529 {
7530  //------------------------ Modification of n1SCEcha number for not connected SC's
7531 
7532  Int_t ModifiedSCEcha = -1;
7533  TString SCQuad = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna); // SCQuad = top OR bottom
7534  TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(n1DeeNumber); // DeeDir = left OR right
7535 
7536  TString TypQuad = "?";
7537  if( SCQuad == "top" && DeeDir == "right" ){TypQuad = "TR";}
7538  if( SCQuad == "top" && DeeDir == "left" ){TypQuad = "TL";}
7539  if( SCQuad == "bottom" && DeeDir == "left" ){TypQuad = "BL";}
7540  if( SCQuad == "bottom" && DeeDir == "right" ){TypQuad = "BR";}
7541 
7542  //------------------------------------------------------------------------------------------- top
7543 
7544  //..... (D1,S1), (D3,S9) SC_in_DS = 30, n1DeeSCEcna = 60 -> 182a for construction top/right
7545  //..... (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 138 -> 178a for construction top/right
7546  if( (SC_in_DS == 30 && n1DeeSCEcna == 60 && TypQuad == "TR") ||
7547  (SC_in_DS == 3 && n1DeeSCEcna == 138 && TypQuad == "TR") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7548 
7549  //..... (D4,S1), (D2,S9) SC_in_DS = 30, n1DeeSCEcna = 60 -> 33a for construction top/left
7550  //..... (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 138 -> 29a for construction top/left
7551  if( (SC_in_DS == 30 && n1DeeSCEcna == 60 && TypQuad == "TL") ||
7552  (SC_in_DS == 3 && n1DeeSCEcna == 138 && TypQuad == "TL") )
7553  {
7554  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7555  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7556  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7557  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7558  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7559  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7560  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7561  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7562  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7563  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7564  }
7565 
7566  //..... (D1,S1), (D3,S9) SC_in_DS = 30, n1DeeSCEcna = 119 -> 182b for construction top/right
7567  if( SC_in_DS == 30 && n1DeeSCEcna == 119 && TypQuad == "TR" ){if(n1SCEcha > 5){ModifiedSCEcha = n1SCEcha - 5;}}
7568 
7569  //..... (D4,S1), (D2,S9) SC_in_DS = 30, n1DeeSCEcna = 119 -> 33b for construction top/left
7570  if( SC_in_DS == 30 && n1DeeSCEcna == 119 && TypQuad == "TL" )
7571  {
7572  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7573  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7574  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7575  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7576  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7577  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7578  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7579  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7580  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7581  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7582  }
7583 
7584  //..... (D1,S1), (D3,S9) SC_in_DS = 12, n1DeeSCEcna = 13 -> 161 for construction top/right
7585  //..... (D4,S1), (D2,S9) SC_in_DS = 12, n1DeeSCEcna = 13 -> 12 for construction top/left
7586  if( SC_in_DS == 12 && n1DeeSCEcna == 13 && TypQuad == "TR" )
7587  {
7588  ModifiedSCEcha = n1SCEcha;
7589  }
7590  if( SC_in_DS == 12 && n1DeeSCEcna == 13 && TypQuad == "TL" )
7591  {
7592  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7593  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7594  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7595  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7596  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7597  }
7598 
7599  //..... (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 176 -> 207a for construction top/right
7600  if( SC_in_DS == 25 && n1DeeSCEcna == 176 && TypQuad == "TR" )
7601  {
7602  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7603  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7604  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7605  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7606  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7607  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7608  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7609  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7610  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7611  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7612  }
7613 
7614  //..... (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 176 -> 58a for construction top/left
7615  if( SC_in_DS == 25 && n1DeeSCEcna == 176 && TypQuad == "TL" )
7616  {
7617  if(n1SCEcha == 16){ModifiedSCEcha = 1;}
7618  if(n1SCEcha == 21){ModifiedSCEcha = 2;}
7619  if(n1SCEcha == 17){ModifiedSCEcha = 3;}
7620  if(n1SCEcha == 22){ModifiedSCEcha = 4;}
7621  if(n1SCEcha == 18){ModifiedSCEcha = 5;}
7622  if(n1SCEcha == 23){ModifiedSCEcha = 6;}
7623  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7624  if(n1SCEcha == 24){ModifiedSCEcha = 8;}
7625  if(n1SCEcha == 20){ModifiedSCEcha = 9;}
7626  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7627  }
7628 
7629  //..... (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 157 -> 178b for construction top/right
7630  //..... (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 193 -> 207b for construction top/right
7631  if( (SC_in_DS == 3 && n1DeeSCEcna == 157 && TypQuad == "TR") ||
7632  (SC_in_DS == 25 && n1DeeSCEcna == 193 && TypQuad == "TR") )
7633  {
7634  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7635  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7636  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7637  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7638  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7639  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7640  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7641  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7642  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7643  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7644  }
7645 
7646  //..... (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 157 -> 29b for construction top/left
7647  //..... (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 193 -> 58b for construction top/left
7648  if( (SC_in_DS == 3 && n1DeeSCEcna == 157 && TypQuad == "TL") ||
7649  (SC_in_DS == 25 && n1DeeSCEcna == 193 && TypQuad == "TL") )
7650  {
7651  if(n1SCEcha == 16){ModifiedSCEcha = 11;}
7652  if(n1SCEcha == 21){ModifiedSCEcha = 12;}
7653  if(n1SCEcha == 17){ModifiedSCEcha = 13;}
7654  if(n1SCEcha == 22){ModifiedSCEcha = 14;}
7655  if(n1SCEcha == 18){ModifiedSCEcha = 15;}
7656  if(n1SCEcha == 23){ModifiedSCEcha = 16;}
7657  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7658  if(n1SCEcha == 24){ModifiedSCEcha = 18;}
7659  if(n1SCEcha == 20){ModifiedSCEcha = 19;}
7660  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7661  }
7662 
7663  //..... (D1,S2), (D3,S8) SC_in_DS = 32, n1DeeSCEcna = 51 -> 216 for construction top/right
7664  if( SC_in_DS == 32 && n1DeeSCEcna == 51 && TypQuad == "TR" )
7665  {
7666  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7667  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7668  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7669  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7670  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7671  }
7672 
7673  //..... (D4,S2), (D2,S8) SC_in_DS = 32, n1DeeSCEcna = 51 -> 67 for construction top/left
7674  if( SC_in_DS == 32 && n1DeeSCEcna == 51 && TypQuad == "TL" )
7675  {
7676  ModifiedSCEcha = n1SCEcha;
7677  }
7678 
7679  // **************************** Special case: TWO SC's IN THE SAME SC-Ecna place *************************
7680  //========================================================================================== D1,D3 ======
7681  // (D1,S2), (D3,S8) SC_in_DS = 3, n1DeeSCEcna = 32 -> 178c for construction top/right
7682  // (D1,S2), (D3,S8) SC_in_DS = 25, n1DeeSCEcna = 32 -> 207c for construction top/right
7683  // For n1DeeSCEcna = 32: ONLY "25" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7684  // fT2d_DSSC[dee-1][32-1] = 25; // also 3; // ( (207c, 58c) also (178c, 29c) for construction)
7685  // is recovered from number for construction
7686  //=======================================================================================================
7687  if( n1DeeSCEcna == 32 && TypQuad == "TR" )
7688  {
7689  if( nSCCons == 207 )
7690  {
7691  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7692  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7693  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7694  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7695  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7696  }
7697  if( nSCCons == 178 )
7698  {
7699  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7700  }
7701  }
7702 
7703  //========================================================================================== D2,D4 ======
7704  // (D4,S2), (D2,S8) SC_in_DS = 3, n1DeeSCEcna = 32 -> 29c for construction top/left
7705  // (D4,S2), (D2,S8) SC_in_DS = 25, n1DeeSCEcna = 32 -> 58c for construction top/left
7706  // For n1DeeSCEcna = 32: ONLY "25" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7707  // fT2d_DSSC[dee-1][32-1] = 25; // also 3; // ( (207c, 58c) also (178c, 29c) for construction)
7708  // is recovered from number for construction
7709  //=======================================================================================================
7710  if( n1DeeSCEcna == 32 && TypQuad == "TL" )
7711  {
7712  if( nSCCons == 58 )
7713  {
7714  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7715  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7716  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7717  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7718  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7719  }
7720  if( nSCCons == 29 )
7721  {
7722  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7723  }
7724  }
7725  //****************************************************************************************************
7726 
7727  //------------------------------------------------------------------------------------------- bottom
7728 
7729  // **************************** Special case: TWO SC's IN THE SAME SC-Ecna place *************************
7730  //========================================================================================== D1,D3 ======
7731  // (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 29 -> 261a for construction bottom/right
7732  // (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 29 -> 268a for construction bottom/right
7733  // For n1DeeSCEcna = 29: ONLY "14" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7734  // fT2d_DSSC[dee-1][29-1] = 14; // also 21; // ( (261a, 112a) also (268a, 119a) for construction)
7735  // is recovered from number for construction
7736  //=======================================================================================================
7737  if( n1DeeSCEcna == 29 && TypQuad == "BR" )
7738  {
7739  if( nSCCons == 261 )
7740  {
7741  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7742  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7743  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7744  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7745  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7746  }
7747  if( nSCCons == 268 )
7748  {
7749  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7750  }
7751  }
7752 
7753  //========================================================================================== D2,D4 ======
7754  // (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 29 -> 112a for construction bottom/left
7755  // (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 29 -> 119a for construction bottom/left
7756  // For n1DeeSCEcna = 29: ONLY "14" IN ARRAY fT2d_DSSC[][] (see TEcnaNumbering.cc)
7757  // fT2d_DSSC[dee-1][29-1] = 14; // also 21; // ( (261a, 112a) also (268a, 119a) for construction)
7758  // is recovered from number for construction
7759  //=======================================================================================================
7760  if( n1DeeSCEcna == 29 && TypQuad == "BL" )
7761  {
7762  if( nSCCons == 119 )
7763  {
7764  if(n1SCEcha == 11){ModifiedSCEcha = 21;}
7765  }
7766  if( nSCCons == 112 )
7767  {
7768  if(n1SCEcha == 1){ModifiedSCEcha = 21;}
7769  if(n1SCEcha == 2){ModifiedSCEcha = 22;}
7770  if(n1SCEcha == 3){ModifiedSCEcha = 23;}
7771  if(n1SCEcha == 6){ModifiedSCEcha = 24;}
7772  if(n1SCEcha == 7){ModifiedSCEcha = 25;}
7773  }
7774  }
7775 
7776  // ****************************************************************************************************
7777 
7778  //..... (D1,S3), (D3,S7) SC_in_DS = 34, n1DeeSCEcna = 188 -> 298a for construction bottom/right
7779  //..... (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 165 -> 261b for construction bottom/right
7780  if( (SC_in_DS == 34 && n1DeeSCEcna == 188 && TypQuad == "BR") ||
7781  (SC_in_DS == 14 && n1DeeSCEcna == 165 && TypQuad == "BR") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7782 
7783  //..... (D4,S3), (D2,S7) SC_in_DS = 34, n1DeeSCEcna = 188 -> 149a for construction bottom/left
7784  //..... (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 165 -> 112b for construction bottom/left
7785  if( (SC_in_DS == 34 && n1DeeSCEcna == 188 && TypQuad == "BL") ||
7786  (SC_in_DS == 14 && n1DeeSCEcna == 165 && TypQuad == "BL") )
7787  {
7788  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7789  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7790  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7791  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7792  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7793  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7794  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7795  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7796  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7797  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7798  }
7799 
7800  //..... (D1,S3), (D3,S7) SC_in_DS = 10, n1DeeSCEcna = 50 -> 224 for construction bottom/right
7801  if( SC_in_DS == 10 && n1DeeSCEcna == 50 && TypQuad == "BR" )
7802  {
7803  ModifiedSCEcha = n1SCEcha;
7804  }
7805 
7806  //..... (D4,S3), (D2,S7) SC_in_DS = 10, n1DeeSCEcna = 50 -> 75 for construction bottom/left
7807  if( SC_in_DS == 10 && n1DeeSCEcna == 50 && TypQuad == "BL")
7808  {
7809  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7810  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7811  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7812  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7813  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7814  }
7815 
7816  //..... (D1,S4), (D3,S6) SC_in_DS = 14, n1DeeSCEcna = 144 -> 261c for construction bottom/right
7817  if( SC_in_DS == 14 && n1DeeSCEcna == 144 && TypQuad == "BR" ){if(n1SCEcha > 5){ModifiedSCEcha = n1SCEcha - 5;}}
7818 
7819  //..... (D4,S4), (D2,S6) SC_in_DS = 14, n1DeeSCEcna = 144 -> 112c for construction bottom/left
7820  if( SC_in_DS == 14 && n1DeeSCEcna == 144 && TypQuad == "BL" )
7821  {
7822  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7823  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7824  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7825  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7826  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7827  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7828  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7829  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7830  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7831  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7832  }
7833 
7834  //..... (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 123 -> 268b for construction bottom/right
7835  //..... (D1,S5), (D3,S5) SC_in_DS = 20, n1DeeSCEcna = 21 -> 281a for construction bottom/right
7836  if( (SC_in_DS == 21 && n1DeeSCEcna == 123 && TypQuad == "BR") ||
7837  (SC_in_DS == 20 && n1DeeSCEcna == 41 && TypQuad == "BR") )
7838  {
7839  if(n1SCEcha == 4){ModifiedSCEcha = 1;}
7840  if(n1SCEcha == 5){ModifiedSCEcha = 2;}
7841  if(n1SCEcha == 9){ModifiedSCEcha = 3;}
7842  if(n1SCEcha == 10){ModifiedSCEcha = 4;}
7843  if(n1SCEcha == 14){ModifiedSCEcha = 5;}
7844  if(n1SCEcha == 15){ModifiedSCEcha = 6;}
7845  if(n1SCEcha == 19){ModifiedSCEcha = 7;}
7846  if(n1SCEcha == 20){ModifiedSCEcha = 8;}
7847  if(n1SCEcha == 24){ModifiedSCEcha = 9;}
7848  if(n1SCEcha == 25){ModifiedSCEcha = 10;}
7849  }
7850 
7851  //..... (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 123 -> 119b for construction bottom/left
7852  //..... (D4,S5), (D2,S5) SC_in_DS = 3, n1DeeSCEcna = 41 -> 132a for construction bottom/left
7853  if( (SC_in_DS == 21 && n1DeeSCEcna == 123 && TypQuad == "BL") ||
7854  (SC_in_DS == 3 && n1DeeSCEcna == 41 && TypQuad == "BL") ){if(n1SCEcha > 15){ModifiedSCEcha = n1SCEcha - 15;}}
7855 
7856 
7857  //..... (D1,S4), (D3,S6) SC_in_DS = 21, n1DeeSCEcna = 102 -> 268c for construction bottom/right
7858  if( SC_in_DS == 21 && n1DeeSCEcna == 102 && TypQuad == "BR" )
7859  {
7860  if(n1SCEcha == 4){ModifiedSCEcha = 11;}
7861  if(n1SCEcha == 5){ModifiedSCEcha = 12;}
7862  if(n1SCEcha == 9){ModifiedSCEcha = 13;}
7863  if(n1SCEcha == 10){ModifiedSCEcha = 14;}
7864  if(n1SCEcha == 14){ModifiedSCEcha = 15;}
7865  if(n1SCEcha == 15){ModifiedSCEcha = 16;}
7866  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7867  if(n1SCEcha == 20){ModifiedSCEcha = 18;}
7868  if(n1SCEcha == 24){ModifiedSCEcha = 19;}
7869  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7870  }
7871 
7872  //..... (D4,S4), (D2,S6) SC_in_DS = 21, n1DeeSCEcna = 102 -> 119c for construction bottom/left
7873  if( SC_in_DS == 21 && n1DeeSCEcna == 102 && TypQuad == "BL" )
7874  {
7875  if(n1SCEcha == 16){ModifiedSCEcha = 11;}
7876  if(n1SCEcha == 21){ModifiedSCEcha = 12;}
7877  if(n1SCEcha == 17){ModifiedSCEcha = 13;}
7878  if(n1SCEcha == 22){ModifiedSCEcha = 14;}
7879  if(n1SCEcha == 18){ModifiedSCEcha = 15;}
7880  if(n1SCEcha == 23){ModifiedSCEcha = 16;}
7881  if(n1SCEcha == 19){ModifiedSCEcha = 17;}
7882  if(n1SCEcha == 24){ModifiedSCEcha = 18;}
7883  if(n1SCEcha == 20){ModifiedSCEcha = 19;}
7884  if(n1SCEcha == 25){ModifiedSCEcha = 20;}
7885  }
7886 
7887  //..... (D1,S5), (D3,S5) SC_in_DS = 23, n1DeeSCEcna = 8 -> 286 for construction bottom/right
7888  if( SC_in_DS == 23 && n1DeeSCEcna == 8 && TypQuad == "BR" )
7889  {
7890  if( n1SCEcha >= 1 && n1SCEcha <= 4 ){ModifiedSCEcha = n1SCEcha;}
7891  if( n1SCEcha >= 6 && n1SCEcha <= 9 ){ModifiedSCEcha = n1SCEcha-1;}
7892  if( n1SCEcha >= 11 && n1SCEcha <= 14 ){ModifiedSCEcha = n1SCEcha-2;}
7893  if( n1SCEcha >= 16 && n1SCEcha <= 19 ){ModifiedSCEcha = n1SCEcha-3;}
7894  if( n1SCEcha >= 21 && n1SCEcha <= 24 ){ModifiedSCEcha = n1SCEcha-4;}
7895  }
7896 
7897  //..... (D4,S5), (D2,S5) SC_in_DS = 6, n1DeeSCEcna = 8 -> 137 for construction bottom/left
7898  if( SC_in_DS == 6 && n1DeeSCEcna == 8 && TypQuad == "BL" )
7899  {
7900  ModifiedSCEcha = n1SCEcha;
7901  }
7902 
7903  //======================= ERROR message if ModifiedSCEcha is not correct
7904  if( ModifiedSCEcha < 1 || ModifiedSCEcha > fEcal->MaxCrysInSC() )
7905  {
7906  cout << "! *** ERROR *** > ModifiedSCEcha = " << ModifiedSCEcha
7907  << ", SC_in_DS = " << SC_in_DS
7908  << ", nSCCons = " << nSCCons
7909  << ", n1DeeSCEcna = " << n1DeeSCEcna
7910  << ", n1SCEcha = " << n1SCEcha
7911  << ", ModifiedSCEcha = " << ModifiedSCEcha
7912  << ", TypQuad = " << TypQuad
7913  << fTTBELL << endl;
7914  }
7915 
7916 
7917  return ModifiedSCEcha;
7918 }
7919 // end of ModifiedSCEchaForNotConnectedSCs(...)
7920 
7921 //======================================================================================
7922 //
7923 // ViewHistime: evolution in time
7924 //
7925 //======================================================================================
7926 
7927 //======================================================================================
7928 //
7929 // ViewHistime: time evolution
7930 //
7931 //======================================================================================
7932 void TEcnaHistos::ViewHistime(const TString& list_of_run_file_name,
7933  const Int_t& StexStin_A, const Int_t& i0StinEcha,
7934  const TString& HistoCode, const TString& opt_plot_arg)
7935 {
7936  //Histogram of the quantities as a function of time (several runs)
7937 
7938  TString opt_plot = opt_plot_arg;
7939  TString HistoType = fCnaParHistos->GetHistoType(HistoCode);
7940 
7941  if( opt_plot_arg == "ONLYONE" ){opt_plot = fOnlyOnePlot;}
7942  if( opt_plot_arg == "SEVERAL" ){opt_plot = fSeveralPlot;}
7943  if( opt_plot_arg == "SAMEONE" ){opt_plot = fSameOnePlot;}
7944 
7945  Int_t OKHisto = 0;
7946 
7947  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Canvas already closed in option SAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7948  Int_t xCanvasExists = 1; // a priori ==> SAME plot // (ViewHistime)
7949  if( opt_plot != fOnlyOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7950  {
7951  TVirtualPad* main_subpad = 0;
7952  //---------------- Call to ActivePad
7953  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
7954  if( main_subpad == 0 )
7955  {
7956  cout << "*TEcnaHistos::ViewHistime(...)> WARNING ===> Canvas has been closed in option SAME or SAME n."
7957  << endl
7958  << " Please, restart with a new canvas."
7959  << fTTBELL << endl;
7960 
7961  ReInitCanvas(HistoCode, opt_plot);
7962  xCanvasExists = 0;
7963  }
7964  }
7965  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7966 
7967  //%%%%%%%%%%%%%%%%%%%%% Change of X variable in option SAME n with no proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7968  Int_t SameXVarMemo = 1; // a priori ==> SAME n option: X variable OK (ViewHistime)
7969  if( !( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" || HistoType == "EvolProj" ) )
7970  {
7971  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7972  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
7973 
7974  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
7975  {
7976  SetXVarMemo(HistoCode, opt_plot, XVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameXVarMemo = 1;
7977  }
7978  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
7979  {
7980  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
7981  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
7982 
7983  if( XVarHisto != XVariableMemo )
7984  {
7985  cout << "!TEcnaHistos::ViewHistime(...)> *** ERROR *** ===> X coordinate changed in option SAME n." << endl
7986  << " Present X = " << XVarHisto << endl
7987  << " Present Y = " << YVarHisto << endl
7988  << " Previous X = " << XVariableMemo << endl
7989  << " Previous Y = " << YVariableMemo
7990  << fTTBELL << endl;
7991  SameXVarMemo = 0;
7992  }
7993  else
7994  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
7995  }
7996  }
7997  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7998 
7999  //%%%%%%%%%%%%%%%%%%%%%%% Change of Y variable in option SAME n with proj %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8000  Int_t SameYVarMemo = 1; // a priori ==> SAME n option: Y variable OK (ViewHistime)
8001  if( HistoType == "Proj" || HistoType == "SampProj" || HistoType == "H1BasicProj" || HistoType == "EvolProj" )
8002  {
8003  TString XVarHisto = fCnaParHistos->GetXVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
8004  TString YVarHisto = fCnaParHistos->GetYVarHisto(HistoCode.Data(), fFlagSubDet.Data(), fFapStexNumber);
8005 
8006  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Free" )
8007  {
8008  SetYVarMemo(HistoCode, opt_plot, YVarHisto); SetYVarMemo(HistoCode, opt_plot, YVarHisto); SameYVarMemo = 1;
8009  }
8010  if( (opt_plot == fSameOnePlot ) && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8011  {
8012  TString XVariableMemo = GetXVarFromMemo(HistoCode, opt_plot);
8013  TString YVariableMemo = GetYVarFromMemo(HistoCode, opt_plot);
8014 
8015  if( YVarHisto != YVariableMemo )
8016  {
8017  cout << "!TEcnaHistos::ViewHistime(...)> *** ERROR *** ===> Y coordinate changed in option SAME n." << endl
8018  << " Present X = " << XVarHisto << endl
8019  << " Present Y = " << YVarHisto << endl
8020  << " Previous X = " << XVariableMemo << endl
8021  << " Previous Y = " << YVariableMemo
8022  << fTTBELL << endl;
8023  SameYVarMemo = 0;
8024  }
8025  else
8026  {SetYVarMemo(HistoCode, opt_plot, YVarHisto);}
8027  }
8028  }
8029  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8030  if( xCanvasExists == 1 && SameXVarMemo == 1 && SameYVarMemo == 1 ){OKHisto = 1;}
8031 
8032  //======================== Histime accepted
8033  if( OKHisto == 1 )
8034  {
8035  // fMyRootFile->PrintNoComment();
8036 
8038 
8039  //................................. Init YMin and YMax of histo // (ViewHistime)
8040  if((opt_plot == fOnlyOnePlot) ||
8041  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8042  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free"))
8044 
8045  //........ GetHistoryRunListParameters(...) : performs the allocation of the array fT1DRunNumber[]
8046  // at first call of the present method ViewHistime
8047  // increments the number of read file (fNbOfListFileEvolXXX) for option SAME
8048  // and read the values fT1DRunNumber[0 to max] from the file list_of_run_file_name
8049  // return the number of runs in the list of the file
8050  //............... Get the run parameters
8051 
8052  Int_t nb_of_runs_in_list = GetHistoryRunListParameters(list_of_run_file_name.Data(), HistoCode);
8053 
8054  if( nb_of_runs_in_list > 0 )
8055  {
8056  //.............................. prepa x axis: time in hours
8057  //Double_t sec_in_day = (Double_t)86400.; //===> (number of seconds in a day)
8058  Double_t margin_frame_xaxis = (Double_t)25.; //===> margin in x coordinates
8059 
8060  Double_t thstart_evol = (Double_t)0.;
8061  Double_t thstop_evol = (Double_t)0.;
8062 
8063  Int_t* exist_indic = new Int_t[nb_of_runs_in_list]; fCnew++;
8064 
8065  //===================================== FIRST LOOP BEGINNING ===================================
8066  //-------------------------------------------------------------------------------- (ViewHistime)
8067  //
8068  // FIRST LOOP: read the "HistoryRunList" file. Check the existence of the runs
8069  // and determine the number of existing runs.
8070  //
8071  //--------------------------------------------------------------------------------
8072 
8073  fNbOfExistingRuns = (Int_t)0;
8074 
8075  if( fFapStexNumber > 0 )
8076  {
8077  for(Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8078  {
8079  exist_indic[i_run] = 0;
8080  // ==> set the attribute value relative to the run (fFapRunNumber)
8081  SetRunNumberFromList(i_run, nb_of_runs_in_list);
8082 
8088 
8089  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewHistime, 1rst loop)
8090  {
8091  fStatusFileFound = kTRUE;
8092 
8093  //------ At first HistoryRunList file: set fStartEvol... and fStopEvol... quantities
8094  if( GetListFileNumber(HistoCode) == 1 )
8095  {
8096  if( fNbOfExistingRuns == 0 )
8097  {
8098  // start time of the first existing run of the list
8101  fStartEvolRun = fT1DRunNumber[i_run];
8102  // start time of the last existing run of the list
8103  // (in case of only one existing run in the list)
8106  fStopEvolRun = fT1DRunNumber[i_run];
8107  }
8108  else
8109  {
8110  // start time of the last existing run of the list
8113  fStopEvolRun = fT1DRunNumber[i_run];
8114  }
8115  }
8116  //---- set flag of run existence and increase number of existing runs
8117  // (for the first HistoryRunList file)
8118  exist_indic[i_run] = 1;
8120  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
8121  else
8122  {
8123  fStatusFileFound = kFALSE;
8124 
8125  cout << "!TEcnaHistos::ViewHistime(...)> *ERROR* =====> "
8126  << " ROOT file not found for run " << fT1DRunNumber[i_run]
8127  << fTTBELL << endl << endl;
8128  }
8129  } // end of for(Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8130 
8131  //===================================== FIRST LOOP END =========================== (ViewHistime)
8132  if( fNbOfExistingRuns > 0 )
8133  {
8134  //-------------------- recover the array after removing non existing ROOT files
8135  Int_t i_existing_run = (Int_t)0;
8136 
8137  for( Int_t i_run = 0; i_run < nb_of_runs_in_list; i_run++)
8138  {
8139  if( exist_indic[i_run] == 1 )
8140  {
8141  fT1DRunNumber[i_existing_run] = fT1DRunNumber[i_run];
8142  i_existing_run++;
8143  }
8144  }
8145 
8146  //---------------------- Get start and stop time values to set the axis limits (ViewHistime)
8147 
8148  thstart_evol = (Double_t)fStartEvolTime;
8149  thstop_evol = (Double_t)fStopEvolTime;
8150 
8151  Double_t xinf_lim = thstart_evol-(thstop_evol-thstart_evol)/margin_frame_xaxis;
8152  Double_t xsup_lim = thstop_evol +(thstop_evol-thstart_evol)/margin_frame_xaxis;
8153 
8154  Axis_t xinf_his = (Axis_t)(xinf_lim);
8155  Axis_t xsup_his = (Axis_t)(xsup_lim);
8156 
8157  //............................. i0StexEcha, i0Sample
8158  Int_t i0StexEcha = fEcalNumbering->Get0StexEchaFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha);
8159  Int_t i0Sample = 0;
8160 
8161  Double_t* time_coordx = new Double_t[fNbOfExistingRuns]; fCnew++;
8162  Double_t* hval_coordy = new Double_t[fNbOfExistingRuns]; fCnew++;
8163 
8164  //........... Set values to -1
8165 
8166  for( Int_t i_run = 0; i_run < fNbOfExistingRuns; i_run++)
8167  {
8168  time_coordx[i_run] = (Double_t)(-1);
8169  hval_coordy[i_run] = (Double_t)(-1);
8170  }
8171 
8172  //========================== SECOND LOOP BEGINNING =====================================
8173  //----------------------------------------------------------------------- (ViewHistime)
8174  //
8175  // SECOND LOOP OVER THE EXISTING RUNS : FILL THE GRAPH COORDINATES
8176  //
8177  //-----------------------------------------------------------------------
8178  for (Int_t i_run = 0; i_run < fNbOfExistingRuns; i_run++)
8179  {
8180  // => set the attribute value relative to the run (fFapRunNumber)
8181  SetRunNumberFromList(i_run, fNbOfExistingRuns);
8182 
8188 
8189  if ( fMyRootFile->LookAtRootFile() == kTRUE ) // (ViewHistime, 2nd loop)
8190  {
8191  fStatusFileFound = kTRUE;
8192 
8193  Bool_t ok_view_histo = GetOkViewHisto(fMyRootFile, StexStin_A, i0StinEcha, i0Sample, HistoCode);
8194 
8195  //............... F I L L G R A P H C O O R D I N A T E S (ViewHistime)
8196  if( ok_view_histo == kTRUE )
8197  {
8198  //................................................. x coordinate
8199  time_t xStartTime = fMyRootFile->GetStartTime();
8200  Double_t thstart = (Double_t)xStartTime;
8201  time_coordx[i_run] = (Double_t)(thstart - xinf_lim);
8202  //................................................. y coordinate
8203  TVectorD read_histo(fEcal->MaxCrysEcnaInStex());
8204  for(Int_t i=0; i<fEcal->MaxCrysEcnaInStex(); i++){read_histo(i)=(Double_t)0.;}
8205 
8206  if(HistoCode == "H_Ped_Date" || HistoCode == "H_Ped_RuDs")
8207  {read_histo = fMyRootFile->ReadPedestals(fEcal->MaxCrysEcnaInStex());}
8208  if(HistoCode == "H_TNo_Date" || HistoCode == "H_TNo_RuDs")
8209  {read_histo = fMyRootFile->ReadTotalNoise(fEcal->MaxCrysEcnaInStex());}
8210  if(HistoCode == "H_MCs_Date" || HistoCode == "H_MCs_RuDs")
8212 
8213  if(HistoCode == "H_LFN_Date" || HistoCode == "H_LFN_RuDs")
8215  if(HistoCode == "H_HFN_Date" || HistoCode == "H_HFN_RuDs")
8217  if(HistoCode == "H_SCs_Date" || HistoCode == "H_SCs_RuDs")
8219  hval_coordy[i_run] = (Double_t)read_histo(i0StexEcha);
8220  }
8221  else
8222  {
8223  cout << "!TEcnaHistos::ViewHistime(...)> Histo not available. "
8224  << fTTBELL << endl;
8225  }
8226  } // end of if ( fMyRootFile->LookAtRootFile() == kTRUE )
8227  else
8228  {
8229  fStatusFileFound = kFALSE;
8230  }
8231  }
8232  //========================== END OF SECOND LOOP ===========================================
8233 
8234  //.................................................................... SCALE x and y
8235  Int_t opt_scale_x = fOptScaleLinx;
8236  if (fFlagScaleX == "LIN" ){opt_scale_x = fOptScaleLinx;}
8237  if (fFlagScaleX == "LOG" ){opt_scale_x = fOptScaleLogx;}
8238 
8239  Int_t opt_scale_y = fOptScaleLiny;
8240  if (fFlagScaleY == "LIN" ){opt_scale_y = fOptScaleLiny;}
8241  if (fFlagScaleY == "LOG" ){opt_scale_y = fOptScaleLogy;}
8242 
8243  //------------------------------------------------- G R A P H (ViewHistime)
8244  TGraph* g_graph0 = new TGraph(fNbOfExistingRuns, time_coordx, hval_coordy); fCnewRoot++;
8245  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
8246  {g_graph0->SetTitle(fCnaParHistos->GetQuantityName(HistoCode));}
8247  if( opt_plot == fSameOnePlot )
8248  {g_graph0->SetTitle(";");}
8249 
8250  //... Ymin and ymax default values will be taken if fFlagUserHistoMin/Max = "OFF"
8251  // (and if "Free" for "SAME" and "SAME n" options)
8252  if((opt_plot == fOnlyOnePlot) ||
8253  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8254  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8255  {
8256  SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8257  SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8258  }
8259 
8260  //................................ Put min max values (ViewHistime)
8261  //.......... default if flag not set to "ON"
8262  //SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8263  //SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8264 
8265  g_graph0->Set(fNbOfExistingRuns);
8266  Double_t graph_ymin =
8268  Double_t graph_ymax =
8270 
8271  //---------------------------------- G R A P H P L O T ---------------------------- (ViewHistime)
8272  if( HistoType == "Evol" )
8273  {
8274  //----------------- G R A P H Y M I N / Y M A X M A N A G E M E N T
8275  if((opt_plot == fOnlyOnePlot) ||
8276  (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8277  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8278  {
8279  if( opt_plot == fSameOnePlot ){fHistoCodeFirst = HistoCode;} // registration of first HistoCode
8280 
8281  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8282  //.......... user's value if flag set to "ON"
8283  if( fFlagUserHistoMin == "ON" )
8284  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
8285  if( fFlagUserHistoMax == "ON" )
8286  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
8287  //................................. automatic min and/or max
8288  if( fFlagUserHistoMin == "AUTO" )
8289  {SetYminMemoFromValue(HistoCode.Data(), graph_ymin); fFlagUserHistoMin = "OFF";}
8290  if( fFlagUserHistoMax == "AUTO" )
8291  {SetYmaxMemoFromValue(HistoCode.Data(), graph_ymax); fFlagUserHistoMax = "OFF";}
8292 
8293  //................................. Init Ymin and Ymax for graph
8294  SetYminMemoFromPreviousMemo(HistoCode);
8295  SetYmaxMemoFromPreviousMemo(HistoCode);
8296  }
8297  //--- Set ymin and ymax to the first HistoCode values for option SAME n
8298  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8299  {
8300  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
8301  SetYminMemoFromValue(HistoCode.Data(), ymin);
8302 
8303  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
8304  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
8305  }
8306 
8307  //..... graph set ymin and ymax and consequently margin at top of the plot
8308  Int_t xFlagAutoYsupMargin = SetGraphFrameYminYmaxFromMemo(g_graph0, HistoCode);
8309 
8310  HistimePlot(g_graph0, xinf_his, xsup_his,
8311  HistoCode.Data(), HistoType.Data(),
8312  StexStin_A, i0StinEcha, i0Sample,
8313  opt_scale_x, opt_scale_y, opt_plot, xFlagAutoYsupMargin);
8314  // g_graph0->Delete(); fCdeleteRoot++; // *===> NE PAS DELETER LE GRAPH SINON CA EFFACE TOUT!
8315 
8316  //--- Recover ymin and ymax from user's values in option SAME n
8317  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8318  {
8319  SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
8320  SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
8321  }
8322  }
8323 
8324  //---------- H I S T O Y P R O J E C T I O N P L O T ---------------------- (ViewHistime)
8325 
8326  //====== 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)
8327  //
8328  // must be done before booking because of the x <-> y permutation in case of "Proj"
8329  //
8330  //-----------------------------------------------------------------------------------------
8331  //
8332  // CASE: HistoType == "Proj" OR HistoType == "SampProj"
8333  //
8334  // Xinf and Xsup must be calculated from ymin and ymax
8335  // of the direct graph
8336  //
8337  //-----------------------------------------------------------------------------------------
8338 
8339  if( HistoType == "EvolProj" )
8340  {
8341  Int_t HisSizeEvolProj = fNbBinsProj;
8342  TVectorD histo_for_plot(HisSizeEvolProj);
8343  for(Int_t i=0; i<HisSizeEvolProj; i++){histo_for_plot[i]=(Double_t)0.;}
8344 
8345  //graph_ymin = GetYminValueFromMemo(HistoCode.Data());
8346  //graph_ymax = GetYmaxValueFromMemo(HistoCode.Data());
8347 
8348  TString HistoCodi = HistoCode; // HistoCodi = direct histo
8349 
8350  if( HistoCode == "H_Ped_RuDs" ){HistoCodi = "H_Ped_Date";}
8351  if( HistoCode == "H_TNo_RuDs" ){HistoCodi = "H_TNo_Date";}
8352  if( HistoCode == "H_LFN_RuDs" ){HistoCodi = "H_LFN_Date";}
8353  if( HistoCode == "H_HFN_RuDs" ){HistoCodi = "H_HFN_Date";}
8354  if( HistoCode == "H_MCs_RuDs" ){HistoCodi = "H_MCs_Date";}
8355  if( HistoCode == "H_SCs_RuDs" ){HistoCodi = "H_SCs_Date";}
8356 
8357  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8358 
8359  //--------------------------------------------------------------------------- (ViewHistime)
8360  //
8361  // fOnlyOnePlot => compute Xinf and Xsup at each time
8362  // fSeveralPlot => compute Xinf and Xsup once when flag = "Free" for each HistoCode
8363  // fSameOnePlot => compute Xinf and Xsup once
8364  //
8365  //--------------------------------------------------------------------------------------
8366  if( (opt_plot == fOnlyOnePlot) ||
8367  ( (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, fSeveralPlot) == "Free" ) ||
8368  (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, fSameOnePlot) == "Free" ) ) )
8369  {
8370  Double_t XinfProj =(Double_t)0;
8371  Double_t XsupProj =(Double_t)0;
8372 
8373  //...................................................................... (ViewHistime)
8374  if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
8375  {
8376  //... Get direct graph ymin and/or ymax and keep them as xinf and xsup
8377  // in memo for the plotted histo
8378  XinfProj = fUserHistoMin;
8379  XsupProj = fUserHistoMax;
8380  if( fFlagUserHistoMin == "AUTO" ){XinfProj = GetYminValueFromMemo(HistoCodi.Data());}
8381  if( fFlagUserHistoMax == "AUTO" ){XsupProj = GetYmaxValueFromMemo(HistoCodi.Data());}
8382  } // end of if( fFlagUserHistoMin == "AUTO" || fFlagUserHistoMax == "AUTO" )
8383  else
8384  {
8385  if( fFlagUserHistoMin == "OFF" )
8386  {
8387  SetYminMemoFromValue(HistoCode.Data(),
8388  fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
8389  XinfProj = GetYminValueFromMemo(HistoCode.Data());
8390  }
8391 
8392  if( fFlagUserHistoMax == "OFF" )
8393  {
8394  SetYmaxMemoFromValue(HistoCode.Data(),
8395  fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
8396  XsupProj = GetYmaxValueFromMemo(HistoCode.Data());
8397  }
8398  if( fFlagUserHistoMin == "ON" ){XinfProj = fUserHistoMin;}
8399  if( fFlagUserHistoMax == "ON" ){XsupProj = fUserHistoMax;}
8400  }
8401 
8402  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
8403  {
8404  SetXinfMemoFromValue(HistoCode.Data(), XinfProj);
8405  SetXsupMemoFromValue(HistoCode.Data(), XsupProj);
8406  }
8407  else
8408  {
8409  SetXinfMemoFromValue(XinfProj);
8410  SetXsupMemoFromValue(XsupProj);
8411  }
8412  } // end of if( (opt_plot == fOnlyOnePlot) ||
8413  // (opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free") ||
8414  // (opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free") )
8415 
8416  Double_t cXinf = (Double_t)0.;
8417  Double_t cXsup = (Double_t)0.;
8418 
8419  //.......... Set Xinf and Xsup at each time because of simultaneous SAME options (ViewHistime)
8420  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
8421  {
8422  cXinf = GetXinfValueFromMemo(HistoCode.Data());
8423  cXsup = GetXsupValueFromMemo(HistoCode.Data());
8424  }
8425  else
8426  {
8427  cXinf = GetXinfValueFromMemo();
8428  cXsup = GetXsupValueFromMemo();
8429  }
8430  //....... In case of only one run: in order to have cXinf < cXsup for "EvolProj" plot
8431  if( cXinf >= cXsup ){cXinf -= 1.; cXsup +=1.;}
8432 
8433  //.............................. histogram booking (ViewHisto)
8434  Axis_t xinf_his = cXinf; // ancillary variables since no const in arguments of TH1D
8435  Axis_t xsup_his = cXsup;
8436 
8437  TString TitleHisto = ";";
8438  if( opt_plot != fSameOnePlot )
8439  {TitleHisto = fCnaParHistos->GetQuantityName(HistoCode.Data());}
8440 
8441  //........ fill array histo_for_plot from hval_coordy (ViewHistime)
8442  for(Int_t i_run=0; i_run<fNbOfExistingRuns; i_run++)
8443  {
8444  Double_t XFromYGraph = hval_coordy[i_run];
8445  Double_t binXProjY = (Double_t)HisSizeEvolProj*(XFromYGraph - cXinf)/(cXsup - cXinf);
8446  Int_t ibinXProjY = (Int_t)binXProjY;
8447  if( ibinXProjY >= 0 && ibinXProjY<HisSizeEvolProj ){histo_for_plot[ibinXProjY]++;}
8448  }
8449 
8450  TH1D* h_his_evol_proj = new TH1D("histevolproj", TitleHisto.Data(),
8451  HisSizeEvolProj, xinf_his, xsup_his); fCnewRoot++;
8452 
8453  h_his_evol_proj->Reset();
8454 
8455  //.... direct histogram filling (ViewHistime)
8456  for(Int_t i=0; i<HisSizeEvolProj; i++)
8457  {
8458  Double_t yi = (Double_t)i/(Double_t)HisSizeEvolProj*(cXsup-cXinf) + cXinf;
8459  Double_t his_val = (Double_t)histo_for_plot[i];
8460  h_his_evol_proj->Fill(yi, his_val);
8461  }
8462 
8463  //------- 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
8464  if( fUserHistoMin >= fUserHistoMax ){fFlagUserHistoMin = "AUTO"; fFlagUserHistoMax = "AUTO";}
8465  //.......... user's value if flag set to "ON"
8466  if( fFlagUserHistoMin == "ON" )
8467  {SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin); fFlagUserHistoMin = "OFF";}
8468  if( fFlagUserHistoMax == "ON" )
8469  {SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax); fFlagUserHistoMax = "OFF";}
8470  //................................. automatic min and/or max
8471  if( fFlagUserHistoMin == "AUTO" )
8472  {SetYminMemoFromValue(HistoCode.Data(), graph_ymin); fFlagUserHistoMin = "OFF";}
8473  if( fFlagUserHistoMax == "AUTO" )
8474  {SetYmaxMemoFromValue(HistoCode.Data(), graph_ymax); fFlagUserHistoMax = "OFF";}
8475 
8476  //................................. Init Ymin and Ymax for graph
8477  SetYminMemoFromPreviousMemo(HistoCode);
8478  SetYmaxMemoFromPreviousMemo(HistoCode);
8479 
8480  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8481  //.......... Find maximum in case of Proj (LIN scale only) // PS: EvolProj => in ViewHistime
8482  if( fFlagScaleY == "LIN" )
8483  {
8485  (HistoCode.Data(),
8487  }
8488 
8489  //--- Set ymin and ymax to the first HistoCode values for option SAME n
8490  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Busy" )
8491  {
8492  Double_t ymin = GetYminValueFromMemo(fHistoCodeFirst.Data());
8493  SetYminMemoFromValue(HistoCode.Data(), ymin);
8494 
8495  Double_t ymax = GetYmaxValueFromMemo(fHistoCodeFirst.Data());
8496  SetYmaxMemoFromValue(HistoCode.Data(), ymax);
8497  }
8498  //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8499 
8500  //..... graph set ymin and ymax and consequently margin at top of the plot
8501  Int_t xFlagAutoYsupMargin = SetGraphFrameYminYmaxFromMemo(g_graph0, HistoCode);
8502  Int_t arg_AlreadyRead = 0;
8503 
8504  HistoPlot(h_his_evol_proj, HisSizeEvolProj,
8505  xinf_his, xsup_his,
8506  HistoCode.Data(), HistoType.Data(),
8507  StexStin_A, i0StinEcha, i0Sample,
8508  opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
8509  xFlagAutoYsupMargin);
8510 
8511  h_his_evol_proj->Delete(); h_his_evol_proj = 0; fCdeleteRoot++;
8512  //*===> deleter l'histo sinon "Replacing existing histo (potential memory leak)" a l'execution
8513 
8514  } // end of if( HistoType == "EvolProj" )
8515  //---------------------------------------------------------------------------------- (ViewHistime)
8516 
8517  delete [] time_coordx; time_coordx = 0; fCdelete++;
8518  delete [] hval_coordy; hval_coordy = 0; fCdelete++;
8519  }
8520  else
8521  {
8522  cout << "!TEcnaHistos::ViewHistime(...)> The list of runs in file: " << list_of_run_file_name
8523  << " has " << nb_of_runs_in_list << " run numbers" << endl
8524  << " but none of them correspond to an existing ROOT file."
8525  << fTTBELL << endl;
8526  }
8527  } // end of if( fFapStexNumber > 0 )
8528  else
8529  {
8530  cout << "!TEcnaHistos::ViewHistime(...)> *ERROR* =====> "
8531  << fFapStexName << " number = " << fFapStexNumber << ". "
8532  << fFapStexName << " number must be in range [1," << fEcal->MaxStexInStas() << "] ";
8533  if( fFlagSubDet == "EB" ){cout << " (or [-18,+18])";}
8534  cout << fTTBELL << endl;
8535  }
8536  delete [] exist_indic; exist_indic = 0; fCdelete++;
8537  } // end of if( nb_of_runs_in_list > 0 )
8538  else
8539  {
8540  if( nb_of_runs_in_list == 0 )
8541  {
8542  cout << "!TEcnaHistos::ViewHistime(...)> The list of runs in file: " << list_of_run_file_name
8543  << " is empty !" << fTTBELL << endl;
8544  }
8545  if( nb_of_runs_in_list < 0 )
8546  {
8547  cout << "!TEcnaHistos::ViewHistime(...)> " << list_of_run_file_name
8548  << ": file not found in directory: " << fCfgHistoryRunListFilePath.Data() << fTTBELL << endl;
8549  }
8550  }
8551  } // end of if( OKHisto == 1 )
8552 } // end of ViewHistime
8553 
8554 //------------------------------------------------------------------------------------
8555 //
8556 // GetHistoryRunListParameters(...), AllocArraysForEvol(), GetListFileNumber(...)
8557 //
8558 //------------------------------------------------------------------------------------
8559 
8560 Int_t TEcnaHistos::GetHistoryRunListParameters(const TString& list_of_run_file_name, const TString& HistoCode)
8561 {
8562  // Build the array of run numbers from the list-of-runs .ascii file.
8563  // Return the list size
8564  // *=====> list_of_run_file_name is the name of the ASCII file containing the list of the runs
8565  //
8566  // SYNTAX OF THE FILE:
8567  //
8568  // HistoryRunList_EB_SM6_Analysis_1.ascii <- 1rst line: comment (file name for example)
8569  // 73677 <- 2nd line and others: run numbers (empty lines accepted)
8570  // 73688
8571  // 73689
8572  //
8573  // 73690
8574  // 73692
8575  //
8576  // In option SAME (of TEcnaHistos), several lists of runs can be called and these lists can have
8577  // DIFFERENT sizes (here the "size" is the number of runs of the list). In addition,
8578  // some runs in some lists may not exist in reality. So, we must adopt a convention which is
8579  // the following: the number of runs corresponds to the number of EXISTING runs
8580  // of the FIRST read list. Let be N1 this number.
8581  // If another list has more runs than N1 runs, we read only the first N1 runs.
8582  // If another list has less runs than N1 runs, we read all the runs of this list.
8583  //
8584  //--------------------------------------------------------------------------------------------------
8585 
8586  Int_t nb_of_runs_in_list = 0;
8587 
8588  //========= immediate return if file name is an empty string
8589  if( list_of_run_file_name.Data() == '\0' )
8590  {
8591  cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> "
8592  << " EMPTY STRING for list of run file name." << fTTBELL << endl;
8593  }
8594  else
8595  {
8596  // ===> increase the HistoryRunList file number
8597  if ( HistoCode == "H_Ped_Date" ){fNbOfListFileH_Ped_Date++;}
8598  if ( HistoCode == "H_TNo_Date" ){fNbOfListFileH_TNo_Date++;}
8599  if ( HistoCode == "H_MCs_Date" ){fNbOfListFileH_MCs_Date++;}
8600  if ( HistoCode == "H_LFN_Date" ){fNbOfListFileH_LFN_Date++;}
8601  if ( HistoCode == "H_HFN_Date" ){fNbOfListFileH_HFN_Date++;}
8602  if ( HistoCode == "H_SCs_Date" ){fNbOfListFileH_SCs_Date++;}
8603 
8604  if ( HistoCode == "H_Ped_RuDs" ){fNbOfListFileH_Ped_RuDs++;}
8605  if ( HistoCode == "H_TNo_RuDs" ){fNbOfListFileH_TNo_RuDs++;}
8606  if ( HistoCode == "H_MCs_RuDs" ){fNbOfListFileH_MCs_RuDs++;}
8607  if ( HistoCode == "H_LFN_RuDs" ){fNbOfListFileH_LFN_RuDs++;}
8608  if ( HistoCode == "H_HFN_RuDs" ){fNbOfListFileH_HFN_RuDs++;}
8609  if ( HistoCode == "H_SCs_RuDs" ){fNbOfListFileH_SCs_RuDs++;}
8610 
8611  fFapFileRuns = list_of_run_file_name.Data(); // (short name)
8612 
8613  //........... Add the path to the file name ( GetHistoryRunListParameters )
8614  TString xFileNameRunList = list_of_run_file_name.Data();
8615  const Text_t *t_file_name = (const Text_t *)xFileNameRunList.Data();
8616 
8617  //.............. replace the string "$HOME" by the true $HOME path
8618  if(fCfgHistoryRunListFilePath.BeginsWith("$HOME"))
8619  {
8620  fCfgHistoryRunListFilePath.Remove(0,5);
8621  const Text_t *t_file_nohome = (const Text_t *)fCfgHistoryRunListFilePath.Data(); // /scratch0/cna/...
8622 
8623  TString home_path = gSystem->Getenv("HOME");
8624  fCfgHistoryRunListFilePath = home_path; // /afs/cern.ch/u/USER
8625  fCfgHistoryRunListFilePath.Append(t_file_nohome); // /afs/cern.ch/u/USER/scratch0/cna/...
8626  }
8627 
8628  xFileNameRunList = fCfgHistoryRunListFilePath.Data();
8629 
8630  xFileNameRunList.Append('/');
8631  xFileNameRunList.Append(t_file_name);
8632 
8633  fFcin_f.open(xFileNameRunList.Data());
8634 
8635  //....................................... ( GetHistoryRunListParameters )
8636  if( fFcin_f.fail() == kFALSE )
8637  {
8638  //...................................... first reading to get the number of runs in the list
8639  fFcin_f.clear();
8640  string xHeadComment;
8641  fFcin_f >> xHeadComment;
8642  Int_t cRunNumber;
8643  Int_t list_size_read = 0;
8644 
8645  while( !fFcin_f.eof() ){fFcin_f >> cRunNumber; list_size_read++;}
8646  fFapNbOfRuns = list_size_read - 1;
8647 
8648  //...................................... second reading to get the run numbers
8649 
8650  //====== Return to the beginning of the file =====
8651  fFcin_f.clear();
8652  fFcin_f.seekg(0, ios::beg);
8653  //================================================
8654 
8655  string yHeadComment;
8656  fFcin_f >> yHeadComment;
8657 
8658  //....................... Set fFapMaxNbOfRuns to -1 at first call (first read file)
8659  //
8660  // fNbOfListFileEvolXXX is initialized to 0 in Init()
8661  // It is incremented once here above
8662  // So, at first call fNbOfListFileEvolXXX = 1
8663  // then fFapMaxNbOfRuns = -1
8664  //.......................................................................... (GetHistoryRunListParameters)
8665  if( (HistoCode == "H_Ped_Date" && fNbOfListFileH_Ped_Date == 1) ||
8666  (HistoCode == "H_TNo_Date" && fNbOfListFileH_TNo_Date == 1) ||
8667  (HistoCode == "H_MCs_Date" && fNbOfListFileH_MCs_Date == 1) ||
8668  (HistoCode == "H_LFN_Date" && fNbOfListFileH_LFN_Date == 1) ||
8669  (HistoCode == "H_HFN_Date" && fNbOfListFileH_HFN_Date == 1) ||
8670  (HistoCode == "H_SCs_Date" && fNbOfListFileH_SCs_Date == 1) ||
8671  (HistoCode == "H_Ped_RuDs" && fNbOfListFileH_Ped_RuDs == 1) ||
8672  (HistoCode == "H_TNo_RuDs" && fNbOfListFileH_TNo_RuDs == 1) ||
8673  (HistoCode == "H_MCs_RuDs" && fNbOfListFileH_MCs_RuDs == 1) ||
8674  (HistoCode == "H_LFN_RuDs" && fNbOfListFileH_LFN_RuDs == 1) ||
8675  (HistoCode == "H_HFN_RuDs" && fNbOfListFileH_HFN_RuDs == 1) ||
8676  (HistoCode == "H_SCs_RuDs" && fNbOfListFileH_SCs_RuDs == 1)){fFapMaxNbOfRuns = -1;}
8677 
8678  // first call: fFapMaxNbOfRuns = fFapNbOfRuns = nb of run from the first reading
8680  // next calls: fFapNbOfRuns must not be greater than fFapMaxNbOfRuns found at first time
8682 
8683  // Allocation and initialization of the array fT1DRunNumber[].
8684  //................. check maximum value for allocation
8686  {
8687  cout << "TEcnaHistos::GetHistoryRunListParameters(...)> Max number of runs in HistoryRunList = "
8688  << fFapMaxNbOfRuns
8689  << " too large, forced to parameter TEcnaParHistos->fMaxNbOfRunsInLists value (= "
8691  << "). Please, set this parameter to a larger value than " << fFapMaxNbOfRuns
8692  << fTTBELL << endl;
8694  }
8695  //................................. Alloc of the array and init
8696  if( fT1DRunNumber == 0 )
8697  {
8698  if( fFapMaxNbOfRuns > 0 )
8699  {
8700  fT1DRunNumber = new Int_t[fFapMaxNbOfRuns]; fCnew++;
8701  }
8702  else
8703  {
8704  cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> fFapMaxNbOfRuns = "
8705  << fFapMaxNbOfRuns << ". Forced to 1." << fTTBELL << endl;
8706  fFapMaxNbOfRuns = 1;
8707  fT1DRunNumber = new Int_t[fFapMaxNbOfRuns]; fCnew++;
8708  }
8709  }
8710 
8711 
8712  //.................................... Init the list of runs
8713  for ( Int_t i_run = 0; i_run < fFapMaxNbOfRuns; i_run++ ){fT1DRunNumber[i_run] = -1;}
8714  //.................................... read the list of runs
8715  for (Int_t i_list = 0; i_list < fFapNbOfRuns; i_list++)
8716  {
8717  fFcin_f >> cRunNumber;
8718  fT1DRunNumber[i_list] = cRunNumber;
8719  }
8720  //........................................ ( GetHistoryRunListParameters )
8721  nb_of_runs_in_list = fFapNbOfRuns;
8722  fFcin_f.close();
8723  }
8724  else
8725  {
8726  fFcin_f.clear();
8727  cout << "!TEcnaHistos::GetHistoryRunListParameters(...)> *** ERROR *** =====> "
8728  << xFileNameRunList.Data() << " : file not found." << fTTBELL << endl;
8729  nb_of_runs_in_list = -1;
8730  }
8731  }
8732  return nb_of_runs_in_list;
8733 }
8734 // end of GetHistoryRunListParameters(...)
8735 
8736 //------------------------------------------------------------------------------------------------
8737 
8738 Int_t TEcnaHistos::GetListFileNumber(const TString& HistoCode)
8739 {
8740 // Get the number of the read list file
8741 
8742  Int_t number = 0;
8743 
8744  if ( HistoCode == "H_Ped_Date"){number = fNbOfListFileH_Ped_Date;}
8745  if ( HistoCode == "H_TNo_Date"){number = fNbOfListFileH_TNo_Date;}
8746  if ( HistoCode == "H_MCs_Date"){number = fNbOfListFileH_MCs_Date;}
8747  if ( HistoCode == "H_LFN_Date"){number = fNbOfListFileH_LFN_Date;}
8748  if ( HistoCode == "H_HFN_Date"){number = fNbOfListFileH_HFN_Date;}
8749  if ( HistoCode == "H_SCs_Date"){number = fNbOfListFileH_SCs_Date;}
8750  if ( HistoCode == "H_Ped_RuDs"){number = fNbOfListFileH_Ped_RuDs;}
8751  if ( HistoCode == "H_TNo_RuDs"){number = fNbOfListFileH_TNo_RuDs;}
8752  if ( HistoCode == "H_MCs_RuDs"){number = fNbOfListFileH_MCs_RuDs;}
8753  if ( HistoCode == "H_LFN_RuDs"){number = fNbOfListFileH_LFN_RuDs;}
8754  if ( HistoCode == "H_HFN_RuDs"){number = fNbOfListFileH_HFN_RuDs;}
8755  if ( HistoCode == "H_SCs_RuDs"){number = fNbOfListFileH_SCs_RuDs;}
8756  return number;
8757 }
8758 
8759 //--------------------------------------------------------------------------------------------------
8760 void TEcnaHistos::SetRunNumberFromList(const Int_t& xArgIndexRun, const Int_t& MaxNbOfRuns)
8761 {
8762  // Set run number for the xArgIndexRun_th run in the list of runs (evolution plots)
8763  // The array fT1DRunNumber[] have been obtained from a previous call
8764  // to GetHistoryRunListParameters(xFileNameRunList, HistoCode)
8765 
8766  if( xArgIndexRun >= 0 && xArgIndexRun < MaxNbOfRuns)
8767  {
8768  fFapRunNumber = fT1DRunNumber[xArgIndexRun];
8769  if( xArgIndexRun == 0 ){InitSpecParBeforeFileReading();} // SpecPar = Special Parameters (dates, times, run types)
8770  }
8771  else
8772  {
8773  cout << "!TEcnaHistos::SetRunNumberFromList(...)> **** ERROR **** Run index out of range in list of runs. xArgIndexRun = "
8774  << xArgIndexRun << " (MaxNbOfRuns = "<< MaxNbOfRuns << ")" << endl;
8775  }
8776 }
8777 
8778 //--------------------------------------------------------------------------------------------------
8780 {
8781  // Init parameters that will be set by reading the info which are in the results ROOT file
8782  // SpecPar = Special Parameters (dates, times, run types)
8783 
8784  Int_t MaxCar = fgMaxCar;
8785  fStartDate.Resize(MaxCar);
8786  fStartDate = "(date not found)";
8787 
8788  MaxCar = fgMaxCar;
8789  fStopDate.Resize(MaxCar);
8790  fStopDate = "(date not found)";
8791 
8792  fStartTime = (time_t)0;
8793  fStopTime = (time_t)0;
8794 
8795  fRunType = "(run type not found)";
8796 
8797 } // ------------- ( end of InitSpecParBeforeFileReading() ) -------------
8798 
8799 //======================================================================================
8800 //
8801 // 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
8802 //
8803 //======================================================================================
8804 
8806  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
8807  const TString& HistoCode)
8808 {
8809 // Check possibility to plot the histo
8810 
8811  Bool_t ok_view_histo = kFALSE;
8812 
8813  TString HistoType = fCnaParHistos->GetHistoType(HistoCode);
8814 
8815  TString root_file_name = aMyRootFile->GetRootFileNameShort();
8816 
8817  TVectorD vStin(fEcal->MaxStinEcnaInStex());
8818  for(Int_t i=0; i<fEcal->MaxStinEcnaInStex() ; i++){vStin(i)=(Double_t)0.;}
8819  vStin = aMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
8820 
8821  if( aMyRootFile->DataExist() == kTRUE )
8822  {
8823  fStatusDataExist = kTRUE;
8824 
8825  Int_t Stin_ok = 0;
8826  for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++)
8827  {
8828  if ( vStin(index_Stin) == StexStin_A ){Stin_ok++;};
8829  }
8830 
8831  //.............................................. ok_view
8832  Int_t ok_view = 1;
8833 
8834  if( !( HistoType == "Global" || HistoType == "Proj" ) )
8835  {
8836  if( Stin_ok != 1)
8837  {
8838  Int_t StinNumber = StexStin_A;
8839  if( fFlagSubDet == "EE" )
8840  {StinNumber = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
8841  cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8842  << ", " << fFapStinName.Data() << " "
8843  << StinNumber
8844  << " not found. Available numbers = ";
8845  for(Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++)
8846  {
8847  if( vStin(i) > 0 )
8848  {
8849  if( fFlagSubDet == "EB" ){cout << vStin(i) << ", ";}
8850  if( fFlagSubDet == "EE" )
8851  {cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";}
8852  }
8853  }
8854  cout << fTTBELL << endl;
8855  ok_view = -1;
8856  }
8857  else
8858  {
8859  ok_view = 1;
8860  }
8861  }
8862 
8863  //.............................................. ok_max_elt ( GetOkViewHisto(...) )
8864  Int_t ok_max_elt = 1;
8865 
8866  if( ( ( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") )
8867  && (i0StinEcha >= 0) && (i0StinEcha<fEcal->MaxCrysInStin())
8868  && (i0Sample >= 0) && (i0Sample <fFapNbOfSamples ) ) ||
8869  !( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") ))
8870  {ok_max_elt = 1;}
8871  else
8872  {
8873  Int_t Choffset = 0;
8874  if( fFlagSubDet == "EE" ){Choffset = 1;}
8875  if( ( (HistoType == "H1Basic") || (HistoType == "Evol") || (HistoType == "EvolProj") )
8876  && !( (i0StinEcha >= 0) && (i0StinEcha<fEcal->MaxCrysInStin()) ) )
8877  {cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8878  << ". Wrong channel number. Value = " << i0StinEcha << " (required range: [" << Choffset << ", "
8879  << fEcal->MaxCrysInStin()-1+Choffset << "] )"
8880  << fTTBELL << endl;}
8881  if( (HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb") &&
8882  !((i0Sample >= 0) && (i0Sample <fFapNbOfSamples)) )
8883  {cout << "!TEcnaHistos::GetOkViewHisto(...)> *ERROR* =====> " << "File: " << root_file_name
8884  << ". Wrong sample index. Value = " << i0Sample << " (required range: [0, "
8885  << fFapNbOfSamples-1 << "] )"
8886  << fTTBELL << endl;}
8887  ok_max_elt = -1;
8888  }
8889 
8890  if( (ok_view == 1) && (ok_max_elt == 1) )
8891  {
8892  ok_view_histo = kTRUE;
8893  }
8894  else
8895  {
8896  cout << "!TEcnaHistos::GetOkViewHisto(...)> At least one ERROR has been detected. ok_view = " << ok_view
8897  << ", ok_max_elt = " << ok_max_elt << fTTBELL << endl;
8898  }
8899  }
8900  else
8901  {
8902  fStatusDataExist = kFALSE;
8903 
8904  cout << "!TEcnaHistos::GetOkViewHisto(...)> No data in ROOT file "
8905  << ", aMyRootFile->DataExist() = " << aMyRootFile->DataExist() << fTTBELL << endl;
8906  }
8907  return ok_view_histo;
8908 }
8909 //..............................................................................................
8910 
8911 Int_t TEcnaHistos::SetHistoFrameYminYmaxFromMemo(TH1D* h_his0, const TString& HistoCode)
8912 {
8913 // Set min and max according to HistoCode
8914 
8915  // if Ymin = Ymax (or Ymin > Ymax): nothing done here
8916  // return xFlagAutoYsupMargin = 1
8917  //
8918  // if Ymin < Ymax: min and max calculated by h_his0->SetMinimum() and h_his0->SetMaximum()
8919  // return xFlagAutoYsupMargin = 0
8920 
8921  Int_t xFlagAutoYsupMargin = 1; // (SetHistoFrameYminYmaxFromMemo)
8922 
8923  if(HistoCode == "D_NOE_ChNb"){
8924  if(fD_NOE_ChNbYmin < fD_NOE_ChNbYmax){xFlagAutoYsupMargin = 0;
8925  h_his0->SetMinimum(fD_NOE_ChNbYmin); h_his0->SetMaximum(fD_NOE_ChNbYmax);}}
8926 
8927  if(HistoCode == "D_NOE_ChDs"){
8928  if(fD_NOE_ChDsYmin < fD_NOE_ChDsYmax){xFlagAutoYsupMargin = 0;
8929  h_his0->SetMinimum(fD_NOE_ChDsYmin); h_his0->SetMaximum(fD_NOE_ChDsYmax);}}
8930 
8931  if(HistoCode == "D_Ped_ChNb"){
8932  if(fD_Ped_ChNbYmin < fD_Ped_ChNbYmax){xFlagAutoYsupMargin = 0;
8933  h_his0->SetMinimum(fD_Ped_ChNbYmin); h_his0->SetMaximum(fD_Ped_ChNbYmax);}}
8934 
8935  if(HistoCode == "D_Ped_ChDs"){
8936  if(fD_Ped_ChDsYmin < fD_Ped_ChDsYmax){xFlagAutoYsupMargin = 0;
8937  h_his0->SetMinimum(fD_Ped_ChDsYmin); h_his0->SetMaximum(fD_Ped_ChDsYmax);}}
8938 
8939  if(HistoCode == "D_TNo_ChNb"){
8940  if(fD_TNo_ChNbYmin < fD_TNo_ChNbYmax){xFlagAutoYsupMargin = 0;
8941  h_his0->SetMinimum(fD_TNo_ChNbYmin); h_his0->SetMaximum(fD_TNo_ChNbYmax);}}
8942 
8943  if(HistoCode == "D_TNo_ChDs"){
8944  if(fD_TNo_ChDsYmin < fD_TNo_ChDsYmax){xFlagAutoYsupMargin = 0;
8945  h_his0->SetMinimum(fD_TNo_ChDsYmin); h_his0->SetMaximum(fD_TNo_ChDsYmax);}}
8946 
8947  if(HistoCode == "D_MCs_ChNb"){
8948  if(fD_MCs_ChNbYmin < fD_MCs_ChNbYmax){xFlagAutoYsupMargin = 0;
8949  h_his0->SetMinimum(fD_MCs_ChNbYmin); h_his0->SetMaximum(fD_MCs_ChNbYmax);}}
8950 
8951  if(HistoCode == "D_MCs_ChDs"){
8952  if(fD_MCs_ChDsYmin < fD_MCs_ChDsYmax){xFlagAutoYsupMargin = 0;
8953  h_his0->SetMinimum(fD_MCs_ChDsYmin); h_his0->SetMaximum(fD_MCs_ChDsYmax);}}
8954 
8955  if(HistoCode == "D_LFN_ChNb"){
8956  if(fD_LFN_ChNbYmin < fD_LFN_ChNbYmax){xFlagAutoYsupMargin = 0;
8957  h_his0->SetMinimum(fD_LFN_ChNbYmin); h_his0->SetMaximum(fD_LFN_ChNbYmax);}}
8958 
8959  if(HistoCode == "D_LFN_ChDs"){
8960  if(fD_LFN_ChDsYmin < fD_LFN_ChDsYmax){xFlagAutoYsupMargin = 0;
8961  h_his0->SetMinimum(fD_LFN_ChDsYmin); h_his0->SetMaximum(fD_LFN_ChDsYmax);}}
8962 
8963  if(HistoCode == "D_HFN_ChNb"){
8964  if(fD_HFN_ChNbYmin < fD_HFN_ChNbYmax){xFlagAutoYsupMargin = 0;
8965  h_his0->SetMinimum(fD_HFN_ChNbYmin); h_his0->SetMaximum(fD_HFN_ChNbYmax);}}
8966 
8967  if(HistoCode == "D_HFN_ChDs"){
8968  if(fD_HFN_ChDsYmin < fD_HFN_ChDsYmax){xFlagAutoYsupMargin = 0;
8969  h_his0->SetMinimum(fD_HFN_ChDsYmin); h_his0->SetMaximum(fD_HFN_ChDsYmax);}}
8970 
8971  if(HistoCode == "D_SCs_ChNb"){
8972  if(fD_SCs_ChNbYmin < fD_SCs_ChNbYmax){xFlagAutoYsupMargin = 0;
8973  h_his0->SetMinimum(fD_SCs_ChNbYmin); h_his0->SetMaximum(fD_SCs_ChNbYmax);}}
8974 
8975  if(HistoCode == "D_SCs_ChDs"){
8976  if(fD_SCs_ChDsYmin < fD_SCs_ChDsYmax){xFlagAutoYsupMargin = 0;
8977  h_his0->SetMinimum(fD_SCs_ChDsYmin); h_his0->SetMaximum(fD_SCs_ChDsYmax);}}
8978 
8979  if(HistoCode == "D_MSp_SpNb"){
8980  if(fD_MSp_SpNbYmin < fD_MSp_SpNbYmax){xFlagAutoYsupMargin = 0;
8981  h_his0->SetMinimum(fD_MSp_SpNbYmin); h_his0->SetMaximum(fD_MSp_SpNbYmax);}}
8982 
8983  if(HistoCode == "D_MSp_SpDs"){
8984  if(fD_MSp_SpDsYmin < fD_MSp_SpDsYmax){xFlagAutoYsupMargin = 0;
8985  h_his0->SetMinimum(fD_MSp_SpDsYmin); h_his0->SetMaximum(fD_MSp_SpDsYmax);}}
8986 
8987  if(HistoCode == "D_SSp_SpNb"){
8988  if(fD_SSp_SpNbYmin < fD_SSp_SpNbYmax){xFlagAutoYsupMargin = 0;
8989  h_his0->SetMinimum(fD_SSp_SpNbYmin); h_his0->SetMaximum(fD_SSp_SpNbYmax);}}
8990 
8991  if(HistoCode == "D_SSp_SpDs"){
8992  if(fD_SSp_SpDsYmin < fD_SSp_SpDsYmax){xFlagAutoYsupMargin = 0;
8993  h_his0->SetMinimum(fD_SSp_SpDsYmin); h_his0->SetMaximum(fD_SSp_SpDsYmax);}}
8994 
8995  if(HistoCode == "D_Adc_EvNb"){
8996  if(fD_Adc_EvNbYmin < fD_Adc_EvNbYmax){xFlagAutoYsupMargin = 0;
8997  h_his0->SetMinimum(fD_Adc_EvNbYmin); h_his0->SetMaximum(fD_Adc_EvNbYmax);}}
8998 
8999  if(HistoCode == "D_Adc_EvDs"){
9000  if(fD_Adc_EvDsYmin < fD_Adc_EvDsYmax){xFlagAutoYsupMargin = 0;
9001  h_his0->SetMinimum(fD_Adc_EvDsYmin); h_his0->SetMaximum(fD_Adc_EvDsYmax);}}
9002 
9003  if(HistoCode == "H2CorccInStins"){
9004  if(fH2CorccInStinsYmin < fH2CorccInStinsYmax){xFlagAutoYsupMargin = 0;
9005  h_his0->SetMinimum(fH2CorccInStinsYmin); h_his0->SetMaximum(fH2CorccInStinsYmax);}}
9006 
9007  if(HistoCode == "H2LFccMosMatrix"){
9008  if(fH2LFccMosMatrixYmin < fH2LFccMosMatrixYmax){xFlagAutoYsupMargin = 0;
9009  h_his0->SetMinimum(fH2LFccMosMatrixYmin); h_his0->SetMaximum(fH2LFccMosMatrixYmax);}}
9010 
9011  if(HistoCode == "H2HFccMosMatrix"){
9012  if(fH2HFccMosMatrixYmin < fH2HFccMosMatrixYmax){xFlagAutoYsupMargin = 0;
9013  h_his0->SetMinimum(fH2HFccMosMatrixYmin); h_his0->SetMaximum(fH2HFccMosMatrixYmax);}}
9014 
9015  if(HistoCode == "H_Ped_RuDs"){
9016  if(fH_Ped_RuDsYmin < fH_Ped_RuDsYmax){xFlagAutoYsupMargin = 0;
9017  h_his0->SetMinimum(fH_Ped_RuDsYmin); h_his0->SetMaximum(fH_Ped_RuDsYmax);}}
9018 
9019  if(HistoCode == "H_TNo_RuDs"){
9020  if(fH_TNo_RuDsYmin < fH_TNo_RuDsYmax){xFlagAutoYsupMargin = 0;
9021  h_his0->SetMinimum(fH_TNo_RuDsYmin); h_his0->SetMaximum(fH_TNo_RuDsYmax);}}
9022 
9023  if(HistoCode == "H_MCs_RuDs"){
9024  if(fH_MCs_RuDsYmin < fH_MCs_RuDsYmax){xFlagAutoYsupMargin = 0;
9025  h_his0->SetMinimum(fH_MCs_RuDsYmin); h_his0->SetMaximum(fH_MCs_RuDsYmax);}}
9026 
9027  if(HistoCode == "H_LFN_RuDs"){
9028  if(fH_LFN_RuDsYmin < fH_LFN_RuDsYmax){xFlagAutoYsupMargin = 0;
9029  h_his0->SetMinimum(fH_LFN_RuDsYmin); h_his0->SetMaximum(fH_LFN_RuDsYmax);}}
9030 
9031  if(HistoCode == "H_HFN_RuDs"){
9032  if(fH_HFN_RuDsYmin < fH_HFN_RuDsYmax){xFlagAutoYsupMargin = 0;
9033  h_his0->SetMinimum(fH_HFN_RuDsYmin); h_his0->SetMaximum(fH_HFN_RuDsYmax);}}
9034 
9035  if(HistoCode == "H_SCs_RuDs"){
9036  if(fH_SCs_RuDsYmin < fH_SCs_RuDsYmax){xFlagAutoYsupMargin = 0;
9037  h_his0->SetMinimum(fH_SCs_RuDsYmin); h_his0->SetMaximum(fH_SCs_RuDsYmax);}}
9038 
9039  return xFlagAutoYsupMargin;
9040 } // end of SetHistoFrameYminYmaxFromMemo
9041 
9042 Int_t TEcnaHistos::SetGraphFrameYminYmaxFromMemo(TGraph* g_graph0, const TString& HistoCode)
9043 {
9044 // Set min and max according to HistoCode
9045 
9046  Int_t xFlagAutoYsupMargin = 1; // DEFAULT: 1 = min and max calulated by ROOT, 0 = by this code
9047 
9048  if(HistoCode == "H_Ped_Date"){
9049  if(fH_Ped_DateYmin < fH_Ped_DateYmax){xFlagAutoYsupMargin = 0;
9050  g_graph0->SetMinimum(fH_Ped_DateYmin); g_graph0->SetMaximum(fH_Ped_DateYmax);}}
9051 
9052  if(HistoCode == "H_TNo_Date"){
9053  if(fH_TNo_DateYmin < fH_TNo_DateYmax){xFlagAutoYsupMargin = 0;
9054  g_graph0->SetMinimum(fH_TNo_DateYmin); g_graph0->SetMaximum(fH_TNo_DateYmax);}}
9055 
9056  if(HistoCode == "H_MCs_Date"){
9057  if(fH_MCs_DateYmin < fH_MCs_DateYmax){xFlagAutoYsupMargin = 0;
9058  g_graph0->SetMinimum(fH_MCs_DateYmin); g_graph0->SetMaximum(fH_MCs_DateYmax);}}
9059 
9060  if(HistoCode == "H_LFN_Date"){
9061  if(fH_LFN_DateYmin < fH_LFN_DateYmax){xFlagAutoYsupMargin = 0;
9062  g_graph0->SetMinimum(fH_LFN_DateYmin); g_graph0->SetMaximum(fH_LFN_DateYmax);}}
9063 
9064  if(HistoCode == "H_HFN_Date"){
9065  if(fH_HFN_DateYmin < fH_HFN_DateYmax){xFlagAutoYsupMargin = 0;
9066  g_graph0->SetMinimum(fH_HFN_DateYmin); g_graph0->SetMaximum(fH_HFN_DateYmax);}}
9067 
9068  if(HistoCode == "H_SCs_Date"){
9069  if(fH_SCs_DateYmin < fH_SCs_DateYmax){xFlagAutoYsupMargin = 0;
9070  g_graph0->SetMinimum(fH_SCs_DateYmin); g_graph0->SetMaximum(fH_SCs_DateYmax);}}
9071 
9072  return xFlagAutoYsupMargin;
9073 } // end of SetGraphFrameYminYmaxFromMemo
9074 
9075 //..............................................................................................
9076 Double_t TEcnaHistos::GetYminFromHistoFrameAndMarginValue(TH1D* h_his0, const Double_t margin_factor)
9077 {
9078 //Calculation for automatic minimum with margin
9079  Double_t minproj = h_his0->GetMinimum();
9080  Double_t maxproj = h_his0->GetMaximum();
9081  minproj = minproj - (maxproj-minproj)*margin_factor;
9082  return minproj;
9083 }
9084 
9085 Double_t TEcnaHistos::GetYmaxFromHistoFrameAndMarginValue(TH1D* h_his0, const Double_t margin_factor)
9086 {
9087 //Calculation for automatic maximum with margin
9088  Double_t minproj = h_his0->GetMinimum();
9089  Double_t maxproj = h_his0->GetMaximum();
9090  maxproj = maxproj + (maxproj-minproj)*margin_factor;
9091  return maxproj;
9092 }
9093 
9094 Double_t TEcnaHistos::GetYminFromGraphFrameAndMarginValue(TGraph* g_graph0, const Double_t margin_factor)
9095 {
9096 //Calculation for automatic minimum with margin
9097  Double_t graph_ymin = g_graph0->GetY()[0];
9098  for(Int_t i=1; i<g_graph0->GetN(); i++)
9099  {if( g_graph0->GetY()[i] < graph_ymin ){graph_ymin = g_graph0->GetY()[i];}}
9100 
9101  Double_t graph_ymax = g_graph0->GetY()[0];
9102  for(Int_t i=1; i<g_graph0->GetN(); i++)
9103  {if( g_graph0->GetY()[i] > graph_ymax ){graph_ymax = g_graph0->GetY()[i];}}
9104 
9105  graph_ymin = graph_ymin - (graph_ymax-graph_ymin)*margin_factor;
9106  return graph_ymin;
9107 }
9108 Double_t TEcnaHistos::GetYmaxFromGraphFrameAndMarginValue(TGraph* g_graph0, const Double_t margin_factor)
9109 {
9110 //Calculation for automatic maximum with margin
9111  Double_t graph_ymin = g_graph0->GetY()[0];
9112  for(Int_t i=1; i<g_graph0->GetN(); i++)
9113  {if( g_graph0->GetY()[i] < graph_ymin ){graph_ymin = g_graph0->GetY()[i];}}
9114 
9115  Double_t graph_ymax = g_graph0->GetY()[0];
9116  for(Int_t i=1; i<g_graph0->GetN(); i++)
9117  {if( g_graph0->GetY()[i] > graph_ymax ){graph_ymax = g_graph0->GetY()[i];}}
9118 
9119  graph_ymax = graph_ymax + (graph_ymax-graph_ymin)*margin_factor;
9120  return graph_ymax;
9121 }
9122 //----------------------------------------------- HistoPlot
9123 
9124 void TEcnaHistos::HistoPlot(TH1D* h_his0, const Int_t& HisSize,
9125  const Axis_t& xinf_his, const Axis_t& xsup_his,
9126  const TString& HistoCode, const TString& HistoType,
9127  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
9128  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
9129  const TString& opt_plot, const Int_t& arg_AlreadyRead,
9130  const Int_t& xFlagAutoYsupMargin)
9131 {
9132  // Plot 1D histogram
9133 
9134  UInt_t canv_w = fCnaParHistos->SetCanvasWidth(HistoCode.Data(), opt_plot);
9135  UInt_t canv_h = fCnaParHistos->SetCanvasHeight(HistoCode.Data(), opt_plot);
9136 
9137  TString QuantityName = " ";
9138  Int_t MaxCar = fgMaxCar;
9139  QuantityName.Resize(MaxCar);
9140  QuantityName = fCnaParHistos->GetQuantityName(HistoCode.Data());
9141 
9142 
9143  if( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 )
9144  {
9145  SetHistoPresentation(h_his0, HistoType.Data(), opt_plot); // (gStyle parameters)
9146  //.................................................. prepa paves commentaires (HistoPlot)
9147  SetAllPavesViewHisto(HistoCode.Data(), StexStin_A, i0StinEcha, i0Sample, opt_plot.Data(), arg_AlreadyRead);
9148  }
9149 
9150  //..................................................... Canvas name (HistoPlot)
9151  TString canvas_name = SetCanvasName(HistoCode.Data(), opt_scale_x, opt_scale_y,
9152  opt_plot.Data(), arg_AlreadyRead,
9153  StexStin_A, i0StinEcha, i0Sample);
9154  //..................................................... Canvas allocations (HistoPlot)
9155  TCanvas* MainCanvas = 0;
9156 
9157  if(opt_plot == fOnlyOnePlot && (arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) )
9158  {
9159  MainCanvas = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w , canv_h); fCnewRoot++;
9160  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
9161  }
9162 
9163  if( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
9164  {if(GetMemoFlag(HistoCode, opt_plot) == "Free")
9165  {MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
9166  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();}}
9167 
9168  // cout << "*TEcnaHistos::HistoPlot(...)> Plot is displayed on canvas ----> " << canvas_name.Data() << endl;
9169 
9170  //--------------- EE => SC for construction, EB => Xtal in SM (default: Stin ECNA number, i0StinEcha)
9171  Int_t Stex_StinCons = StexStin_A; // Stex_StinCons = Tower for EB, SC for construction for EE
9172  Int_t n1StexCrys = i0StinEcha+1; // n1StexCrys = Crys in SM for EB, ECNA
9173 
9174  if( StexStin_A >= 1 && StexStin_A <= fEcal->MaxStinEcnaInStex() )
9175  {
9176  if( fFlagSubDet == "EB" )
9177  {n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);}
9178  if( fFlagSubDet == "EE" )
9179  {Stex_StinCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
9180  }
9181 
9182  //------ String for StexNumber ( to display "EB" or "EE" if Stex = 0 )
9183  TString sFapStexNumber = StexNumberToString(fFapStexNumber);
9184 
9185  //============================================================================= (HistoPlot)
9186  //
9187  // 1st OPERATIONS: Pave texts preparation and first Draw.
9188  // SetParametersCanvas
9189  // Set Memo Flags.
9190  // Set main_subpad and main_pavtxt
9191  //
9192  //=============================================================================
9193  TVirtualPad* main_subpad = 0; // main_subpad: Pad for the histo
9194  TPaveText* main_pavtxt = 0; // Pave for the "Several Changing" parameters (options SAME and SAME n)
9195 
9196  Int_t xMemoPlotSame = 1; // a priori ==> SAME plot
9197 
9198  //========================================= Option ONLYONE (HistoPlot)
9199  if( opt_plot == fOnlyOnePlot )
9200  {
9201  if( arg_AlreadyRead == 0 || arg_AlreadyRead == 1 )
9202  {
9203  //.................................... Draw titles and paves (pad = main canvas)
9204  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
9205  fPavComStex->Draw();
9206  if( !( HistoType == "Global" || HistoType == "Proj" ) ){fPavComStin->Draw(); fPavComXtal->Draw();}
9207 
9208  if( HistoType == "EvolProj" )
9209  {
9210  fPavComEvolRuns->Draw();
9211  fPavComEvolNbOfEvtsAna->Draw();
9212  }
9213  else
9214  {
9215  fPavComAnaRun->Draw();
9216  fPavComNbOfEvts->Draw();
9217  }
9218 
9219  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
9220  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
9221  Double_t y_low = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
9222  Double_t y_up = fCnaParHistos->BoxBottomY("top_right_box_EB") - 0.005;
9223  Color_t fond_pad = fCnaParHistos->ColorDefinition("blanc");
9224 
9225  Double_t x_margin = x_low;
9226  Double_t y_margin = y_low;
9227  MainCanvas->Divide( 1, 1, x_margin, y_margin, fond_pad);
9228  // Divide(nx, ny, x_margin, y_margin, color);
9229 
9230  gPad->cd(1);
9231  main_subpad = gPad;
9232  main_subpad->SetPad(x_low, y_low, x_up, y_up);
9233 
9234  xMemoPlotSame = 0;
9235  }
9236  if (arg_AlreadyRead > 1 )
9237  {main_subpad = fCurrentPad;}
9238 
9239  } // end of if(opt_plot == fOnlyOnePlot && (arg_AlreadyRead == 0 || arg_AlreadyRead == 1 ) )
9240 
9241  //========================================= Options SAME and SAME n (HistoPlot)
9242  if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9243  {
9244  //..................... First call in options SAME and SAME n
9245  if( GetMemoFlag(HistoCode, opt_plot) == "Free" )
9246  {
9247  //Call to SetParametersPavTxt
9248  //fPavTxt<HISTOCODE> = fPavComSeveralChanging; => come from SetAllPavesViewHisto
9249  SetParametersPavTxt(HistoCode, opt_plot);
9250 
9251  //---------------- Call to ActivePavTxt
9252  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
9253  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
9254 
9255  //---------------------------- Set texts for pave "several changing", options SAME and SAME n
9256  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
9257 
9258  main_pavtxt->SetTextAlign(fTextPaveAlign);
9259  main_pavtxt->SetTextFont(fTextPaveFont);
9260  main_pavtxt->SetBorderSize(fTextBorderSize);
9261  Float_t cTextPaveSize = 0.025;
9262  if( HistoType == "H1Basic" || HistoType == "SampProj" || HistoType == "H1BasicProj" ||
9263  HistoType == "Proj" || HistoType == "EvolProj" )
9264  {cTextPaveSize = 0.025;}
9265  main_pavtxt->SetTextSize(cTextPaveSize);
9266 
9267  char* f_in = new char[fgMaxCar]; fCnew++;
9268 
9269  //------------------------------------------------------------ titles pave "several" (HistoPlot)
9270  TString DecalStexName = "";
9271  if( fFlagSubDet == "EB" ){DecalStexName = " ";}
9272  TString DecalStinName = "";
9273  if( fFlagSubDet == "EE" ){DecalStinName = " ";}
9274 
9275  TString sStexOrStasName = "";
9276  if( fFapStexNumber == 0 ){sStexOrStasName = " ";}
9277  if( fFapStexNumber != 0 ){sStexOrStasName = fFapStexName;}
9278 
9279  if( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot )
9280  {
9281  if( HistoType == "SampGlobal" )
9282  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s Sample",
9283  DecalStexName.Data(), sStexOrStasName.Data(),
9284  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9285  if( HistoType == "SampProj" )
9286  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s Sample",
9287  DecalStexName.Data(), sStexOrStasName.Data(),
9288  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9289  if( HistoType == "H1Basic" || HistoType == "H1BasicProj" )
9290  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s %s%s %s %s",
9291  DecalStexName.Data(), sStexOrStasName.Data(),
9292  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9293  if((HistoType == "Global") || (HistoType == "Proj") )
9294  {sprintf(f_in, "Analysis Samp RUN# (run type ) Evts range Nb Evts %s%s",
9295  DecalStexName.Data(), sStexOrStasName.Data());}
9296 
9297  if( HistoType == "EvolProj" )
9298  {sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
9299  DecalStexName.Data(), sStexOrStasName.Data(),
9300  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());}
9301  }
9302 
9303  TText* ttit = main_pavtxt->AddText(f_in);
9304  ttit->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
9305 
9306  //------------------------------------------------------------ values pave "several" (HistoPlot)
9307 
9308  //.................................... option SAME n only (HistoPlot)
9309  if( opt_plot == fSameOnePlot)
9310  {
9311  if( (HistoType == "Global") || (HistoType == "Proj") || (HistoType == "H1BasicProj") )
9312  {
9313  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s %-25s",
9316  sFapStexNumber.Data(), QuantityName.Data());
9317  }
9318 
9319  if( HistoType == "EvolProj" )
9320  {
9321  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%7d %-25s",
9323  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
9324  }
9325 
9326  } // end of if for option SAME n only
9327 
9328  //..................................... option SAME (HistoPlot)
9329  if( opt_plot == fSeveralPlot )
9330  {
9331  Int_t kSample = i0Sample+1; // Sample number range = [1,n<=10]
9332 
9333  if( HistoType == "SampGlobal" )
9334  {
9335  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9338  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9339  }
9340  if( HistoType == "SampProj" )
9341  {
9342  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9345  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9346  }
9347  if( HistoType == "H1Basic" || HistoType == "H1BasicProj" )
9348  {
9349  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d",
9352  Stex_StinCons, n1StexCrys, i0StinEcha);
9353  }
9354  if( (HistoType == "Global") || (HistoType == "Proj") )
9355  {
9356  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s",
9359  }
9360 
9361  if( HistoType == "EvolProj" )
9362  {
9363  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %4s%7d%5d%5d",
9364  fFapAnaType.Data(), fFapNbOfSamples,
9366  Stex_StinCons, n1StexCrys, i0StinEcha);
9367  }
9368  }
9369 
9370  TText* tt = main_pavtxt->AddText(f_in);
9371  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
9372 
9373  delete [] f_in; f_in = 0; fCdelete++;
9374 
9375  //---------------- Draw the "several changing" pave with its text in the Canvas (AT FIRST TIME)
9376  main_pavtxt->Draw();
9377  //---------------- Draw evol run pave if "EvolProj" (AT FIRST TIME)
9378  if( HistoType == "EvolProj" ){fPavComEvolRuns->Draw();}
9379 
9380  //---------------- Call to SetParametersCanvas
9381  //fImp<HISTOCODE> = (TCanvasImp*)fCanv<HISTOCODE>->GetCanvasImp();
9382  //fCanv<HISTOCODE>->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
9383  //fPad<HISTOCODE> = gPad;
9384  //fMemoPlot<HISTOCODE> = 1; =======> set MemoFlag to "Buzy"
9385  //fMemoColor<HISTOCODE> = 0;
9386  SetParametersCanvas(HistoCode, opt_plot);
9387 
9388  //---------------- Set xMemoPlotSame to 0
9389  xMemoPlotSame = 0;
9390  } // end of if( GetMemoFlag(HistoCode, opt_plot) == "Free" ) (HistoPlot)
9391 
9392  //.......... First and further calls in options SAME and SAME n (fMemoPlot<HISTOCODE> = 1)
9393  if(GetMemoFlag(HistoCode, opt_plot) == "Busy")
9394  {
9395  //---------------- Call to ActivePavTxt
9396  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
9397  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
9398 
9399  //---------------- Call to ActivePad
9400  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
9401 
9402  //---------------- Recover pointer to the current canvas
9403  MainCanvas = GetCurrentCanvas(HistoCode.Data(), opt_plot.Data());
9404  }
9405  } // end of if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9406 
9407 
9408  //============================================================================= (HistoPlot)
9409  //
9410  // 2nd OPERATIONS: Write and Draw the parameter values in the
9411  // "several changing" pave (options SAME and SAME n)
9412  // and Draw Histo
9413  //=============================================================================
9414  if(main_subpad != 0)
9415  {
9416  if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9417  {
9418  //------------------------------------------------------------ values
9419  if(xMemoPlotSame != 0)
9420  {
9421  // main_pavtxt = fPavComSeveralChanging = fPavTxt<HISTOCODE>
9422  main_pavtxt->SetTextAlign(fTextPaveAlign);
9423  main_pavtxt->SetTextFont(fTextPaveFont);
9424  main_pavtxt->SetBorderSize(fTextBorderSize);
9425  Float_t cTextPaveSize = 0.025;
9426  if( HistoType == "H1Basic" || HistoType == "SampProj"
9427  || HistoType == "Proj" || HistoType == "EvolProj" || HistoType == "H1BasicProj" )
9428  {cTextPaveSize = 0.025;}
9429  main_pavtxt->SetTextSize(cTextPaveSize);
9430 
9431  char* f_in = new char[fgMaxCar]; fCnew++;
9432 
9433  if( opt_plot == fSameOnePlot )
9434  {
9435  if( (HistoType == "Global") || (HistoType == "Proj") )
9436  {
9437  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s %-25s",
9440  sFapStexNumber.Data(), QuantityName.Data());
9441  }
9442 
9443  if( HistoType == "EvolProj" )
9444  {
9445  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%7d %-25s",
9446  fFapAnaType.Data(), fFapNbOfSamples,
9448  Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
9449  }
9450  }
9451 
9452  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
9453  {
9454  Int_t kSample = i0Sample+1; // Sample number range = [1,n<=10] (HistoPlot)
9455 
9456  if(HistoType == "SampGlobal" )
9457  {
9458  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9461  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9462  }
9463  if( HistoType == "SampProj" )
9464  {
9465  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d%6d",
9468  Stex_StinCons, n1StexCrys, i0StinEcha, kSample);
9469  }
9470  if( HistoType == "H1Basic" || HistoType == "H1BasicProj")
9471  {
9472  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s%6d%5d%5d",
9475  Stex_StinCons, n1StexCrys, i0StinEcha);
9476  }
9477  if( (HistoType == "Global") || (HistoType == "Proj") )
9478  {
9479  sprintf(f_in, "%-10s 1-%2d%7d (%-20s) %5d-%5d %7d %4s",
9482  }
9483 
9484  if( HistoType == "EvolProj" )
9485  {
9486  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %4s%7d%5d%5d",
9487  fFapAnaType.Data(), fFapNbOfSamples,
9489  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha);
9490  }
9491  }
9492 
9493  TText *tt = main_pavtxt->AddText(f_in);
9494  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
9495  MainCanvas->cd(); gStyle->SetOptDate(0);
9496  main_pavtxt->Draw();
9497 
9498  delete [] f_in; f_in = 0; fCdelete++;
9499  }
9500 
9501  main_subpad->cd();
9502  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
9503  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
9504  Double_t y_low = fCnaParHistos->BoxTopY("several_plots_box") + 0.005;
9505  Double_t y_up = fCnaParHistos->BoxBottomY("general_comment") - 0.005;
9506  if( opt_plot == fSameOnePlot && HistoType == "EvolProj" )
9507  {y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;}
9508  main_subpad->SetPad(x_low, y_low, x_up, y_up);
9509  } // end of if( (opt_plot == fSeveralPlot) || (opt_plot == fSameOnePlot) )
9510 
9511  //............................................ Style (HistoPlot)
9512  SetViewHistoColors(h_his0, HistoCode.Data(), opt_plot, arg_AlreadyRead);
9513 
9514  //................................. Set axis titles
9515  TString axis_x_var_name = SetHistoXAxisTitle(HistoCode);
9516  TString axis_y_var_name = SetHistoYAxisTitle(HistoCode);
9517  h_his0->GetXaxis()->SetTitle(axis_x_var_name);
9518  h_his0->GetYaxis()->SetTitle(axis_y_var_name);
9519 
9520  Int_t lin_scale = 0;
9521  Int_t log_scale = 1;
9522 
9523  if(opt_scale_x == fOptScaleLinx){gPad->SetLogx(lin_scale);}
9524  if(opt_scale_x == fOptScaleLogx){gPad->SetLogx(log_scale);}
9525  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(lin_scale);}
9526  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(log_scale);}
9527 
9528  //---------------------------------------------------------------- Draw histo (HistoPlot)
9529  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0 ){h_his0->DrawCopy();}
9530  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 1 ){h_his0->DrawCopy();}
9531  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead > 1 ){h_his0->DrawCopy("AHSAME");}
9532 
9533  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
9534  {
9535  if(xMemoPlotSame == 0){h_his0->DrawCopy();}
9536  if(xMemoPlotSame != 0){h_his0->DrawCopy("SAME");}
9537  }
9538  //----------------------------------------------------------------
9539 
9540  //.................... Horizontal line at y=0 (HistoPlot)
9541  if( !( HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb" ||
9542  HistoType == "Proj" || HistoType == "SampProj" ||
9543  HistoType == "EvolProj" || HistoType == "H1BasicProj" ) &&
9544  !( HistoType == "H1Basic" && arg_AlreadyRead == 0 ) )
9545  {
9546  Double_t yinf = h_his0->GetMinimum();
9547  Double_t ysup = h_his0->GetMaximum();
9548  if( yinf <= (Double_t)0. && ysup >= (Double_t)0. )
9549  {TLine* lin = new TLine(0.,0.,(Double_t)HisSize, 0.); fCnewRoot++;
9550  lin->Draw();}
9551  }
9552 
9553  if( ( opt_plot == fOnlyOnePlot )
9554  || ( (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) && xMemoPlotSame == 0 ) )
9555  {
9556  Double_t yinf = (Double_t)h_his0->GetMinimum();
9557  Double_t ysup = (Double_t)h_his0->GetMaximum();
9558 
9559  if(xFlagAutoYsupMargin == 1)
9560  {
9561  if( yinf >= ysup ){yinf = (Double_t)0.; ysup += ysup;} // ROOT default if ymin >= ymax
9562  Double_t MaxMarginFactor = (Double_t)0.05; // frame top line = 5% above the maximum
9563  ysup += (ysup-yinf)*MaxMarginFactor; // ROOT default if ymin < ymax
9564  }
9565 
9566  char* f_in = new char[fgMaxCar]; fCnew++;
9567 
9568  //.................... Vertical lines for Data sectors (EE Global plot only)
9569  if( fFlagSubDet == "EE" && fFapStexNumber == 0 )
9570  {
9571  //............................................................. Data Sectors (HistoPlot)
9572  Color_t coul_DS = fCnaParHistos->ColorDefinition("noir");
9573  Int_t DeeOffset = 0;
9574  for(Int_t n1Dee=1; n1Dee<=4; n1Dee++)
9575  {
9576  if( n1Dee == 4 ){DeeOffset = 0;}
9577  if( n1Dee == 3 ){DeeOffset = fEcal->MaxSCForConsInDee();} // 149
9578  if( n1Dee == 2 ){DeeOffset = 2*fEcal->MaxSCForConsInDee();} // 446
9579  if( n1Dee == 1 ){DeeOffset = 3*fEcal->MaxSCForConsInDee();} // 595
9580 
9581  Double_t ydee = ysup + (ysup-yinf)/(Double_t)15.;
9582  Double_t xBinDee = DeeOffset + fEcal->MaxSCForConsInDee()/(Double_t)2.;
9583  sprintf( f_in, "D%d", n1Dee );
9584  TText *text_Dee = new TText(xBinDee, ydee, f_in); fCnewRoot++;
9585  text_Dee->SetTextColor(coul_DS);
9586  text_Dee->SetTextSize((Double_t)0.04);
9587  text_Dee->Draw("SAME");
9588 
9589  Double_t DSLabelOffset = (Double_t)12;
9590 
9591  for(Int_t i=1; i<5; i++)
9592  {
9593  Int_t iDS = 0;
9594  if( n1Dee == 1 ){iDS = i;}
9595  if( n1Dee == 2 ){iDS = i+4;}
9596  if( n1Dee == 3 ){iDS = i+5;}
9597  if( n1Dee == 4 ){iDS = i+1;}
9598 
9599  Double_t xBinDS = DeeOffset + (Double_t)GetDSOffset(n1Dee, iDS)/fEcal->MaxCrysInSC();
9600  TLine* lin_DS = new TLine(xBinDS, yinf, xBinDS, ysup); fCnewRoot++;
9601  lin_DS->SetLineColor(coul_DS);
9602  lin_DS->SetLineWidth(1);
9603  lin_DS->SetLineStyle(2);
9604  lin_DS->Draw();
9605 
9606  if( n1Dee == 2 && i == 4 )
9607  {
9608  TLine* lin_DSp = new TLine(DeeOffset, yinf, DeeOffset, ysup); fCnewRoot++;
9609  lin_DSp->SetLineColor(coul_DS);
9610  lin_DSp->SetLineWidth(1);
9611  lin_DSp->SetLineStyle(2);
9612  lin_DSp->Draw();
9613  }
9614 
9615  Double_t yds = ysup + (ysup-yinf)/(Double_t)50.;
9616  Double_t xBinDSp = xBinDS + DSLabelOffset;
9617  Int_t nDS = iDS;
9618 
9619  sprintf( f_in, "S%d", nDS );
9620  TText *text_DS = new TText(xBinDSp, yds, f_in); fCnewRoot++;
9621  text_DS->SetTextColor(coul_DS);
9622  text_DS->SetTextSize((Double_t)0.03);
9623  text_DS->Draw("SAME");
9624  if( (n1Dee == 4 && i == 1) || (n1Dee == 2 && i == 4) )
9625  {
9626  if(n1Dee == 4){nDS = iDS-1;}
9627  if(n1Dee == 2){nDS = iDS+1;}
9628  sprintf( f_in, "S%d", nDS );
9629  TText *text_DS = new TText(xBinDS-1.75*DSLabelOffset, yds, f_in); fCnewRoot++;
9630  text_DS->SetTextColor(coul_DS);
9631  text_DS->SetTextSize((Double_t)0.03);
9632  text_DS->Draw("SAME");
9633  }
9634  }
9635  }
9636  }
9637 
9638  //........... Vertical lines for Data sectors and special SC's (EE only, Dee's Global plots) (HistoPlot)
9639  if( fFlagSubDet == "EE" && fFapStexNumber > 0 )
9640  {
9641  if( HistoType == "Global" )
9642  {
9643  Double_t ytext = yinf - (ysup-yinf)/8.5;
9644  //............................................................. Data Sectors
9645  Color_t coul_DS = fCnaParHistos->ColorDefinition("noir");
9646  for(Int_t i=1; i<5; i++)
9647  {
9648  Int_t iDS = 0;
9649  if( fFapStexNumber == 1 ){iDS = i;}
9650  if( fFapStexNumber == 2 ){iDS = i+4;}
9651  if( fFapStexNumber == 3 ){iDS = i+5;}
9652  if( fFapStexNumber == 4 ){iDS = i+1;}
9653 
9654  Double_t xBinDS = (Double_t)GetDSOffset(fFapStexNumber, iDS);
9655  TLine* lin_DS = new TLine(xBinDS, yinf, xBinDS, ysup); fCnewRoot++;
9656  lin_DS->SetLineColor(coul_DS);
9657  lin_DS->SetLineWidth(2);
9658  lin_DS->SetLineStyle(2);
9659  lin_DS->Draw();
9660  Double_t ytextds = ysup + (ysup-yinf)/30.;
9661  Double_t xBinDSNumber =
9662  xBinDS + fEcalNumbering->GetMaxSCInDS(iDS)*fEcal->MaxCrysInSC()/(Double_t)2.25;
9663  sprintf( f_in, "S%d", iDS );
9664  TText *text_DS = new TText(xBinDSNumber, ytextds, f_in); fCnewRoot++;
9665  text_DS->SetTextColor(coul_DS);
9666  text_DS->SetTextSize((Double_t)0.04);
9667  text_DS->Draw("SAME");
9668  if( ( (fFapStexNumber == 1 || fFapStexNumber == 2 ) && i == 4 ) ||
9669  ( (fFapStexNumber == 3 || fFapStexNumber == 4 ) && i == 1 ) )
9670  {
9671  Int_t iDSp = iDS;
9672  if( i == 4 ){iDSp = iDS+1;}
9673  if( i == 1 ){iDSp = iDS-1;}
9674  sprintf( f_in, "S%d", iDSp);
9675  Double_t xBinpDSNumber =
9676  xBinDSNumber - fEcalNumbering->GetMaxSCInDS(iDS)*fEcal->MaxCrysInSC();
9677  TText *text_DSp = new TText(xBinpDSNumber, ytextds, f_in); fCnewRoot++;
9678  text_DSp->SetTextColor(coul_DS);
9679  text_DSp->SetTextSize((Double_t)0.04);
9680  text_DSp->Draw("SAME");
9681  }
9682  }
9683  //.............................................................. Vertical lines for SC's
9684  // Trop serre. A garder en reserve.
9685  //for(Int_t i=0; i<fEcal->MaxSCForConsInDee(); i++)
9686  // {
9687  // Double_t xBinSC =(Double_t)(fEcal->MaxCrysInSC()*i);
9688  // TLine* lin_SC = new TLine(xBinSC, yinf, xBinSC, ysup); fCnewRoot++;
9689  // lin_SC->SetLineColor(coul_DS);
9690  // lin_SC->SetLineStyle(3);
9691  // lin_SC->Draw();
9692  // }
9693  //............................................................... Not connected SC's
9694  Color_t coul_notconnected = fCnaParHistos->ColorDefinition("bleu_fonce");
9695  for(Int_t i=1; i<=fEcal->NumberOfNotConnectedSCs(); i++)
9696  {
9697  Int_t index = 0;
9698  if( fFapStexNumber == 1 || fFapStexNumber == 3 ){index = 2*i - 1;}
9699  if( fFapStexNumber == 2 || fFapStexNumber == 4 ){index = 2*i;}
9700  //................. display of the not connected SC's numbers (+ vertical line)
9701  Double_t xBinNotConnectedSC = NotConnectedSCH1DBin(index);
9702  TLine* lin_notconnected =
9703  new TLine(xBinNotConnectedSC, yinf, xBinNotConnectedSC, ysup); fCnewRoot++;
9704  lin_notconnected->SetLineColor(coul_notconnected);
9705  lin_notconnected->SetLineStyle(3);
9706  lin_notconnected->Draw();
9707 
9708  Double_t xBinNotConnectedSCEnd = NotConnectedSCH1DBin(index)+fEcal->MaxCrysInSC();
9709  TLine* lin_notconnected_end =
9710  new TLine(xBinNotConnectedSCEnd, yinf, xBinNotConnectedSCEnd, ysup); fCnewRoot++;
9711  lin_notconnected_end->SetLineColor(coul_notconnected);
9712  lin_notconnected_end->SetLineStyle(3);
9713  lin_notconnected_end->Draw();
9714 
9715  //sprintf( f_in, "%d", GetNotConnectedSCForConsFromIndex(index) );
9716  sprintf( f_in, "%d", GetNotConnectedDSSCFromIndex(index) );
9717  TText *text_SC_NotConnected = new TText(xBinNotConnectedSC, ytext, f_in); fCnewRoot++;
9718  text_SC_NotConnected->SetTextAngle((Double_t)45.);
9719  text_SC_NotConnected->SetTextColor(coul_notconnected);
9720  text_SC_NotConnected->SetTextFont(42);
9721  text_SC_NotConnected->SetTextSize((Double_t)0.03);
9722  text_SC_NotConnected->Draw("SAME");
9723  }
9724  //Double_t xtext = xinf_his - (xsup_his-xinf_his)/8.;
9725  //Double_t ytextp = yinf - (ysup-yinf)/6.;
9726  //sprintf( f_in, "Special SC => ");
9727  //TText *text_legend_NotConnected = new TText(xtext, ytext, f_in); fCnewRoot++;
9728  //text_legend_NotConnected->SetTextColor(coul_notconnected);
9729  //text_legend_NotConnected->SetTextSize((Double_t)0.03);
9730  //text_legend_NotConnected->Draw("SAME");
9731 
9732  //............................................................... Not complete SC's
9733  Color_t coul_notcomplete = fCnaParHistos->ColorDefinition("rouge40");
9734  for(Int_t i=1; i<=fEcal->NumberOfNotCompleteSCs(); i++)
9735  {
9736  Int_t index = 0;
9737  if( fFapStexNumber == 1 || fFapStexNumber == 3 ){index = 2*i - 1;}
9738  if( fFapStexNumber == 2 || fFapStexNumber == 4 ){index = 2*i;}
9739  //................. display of the not complete SC's numbers (+ vertical line)
9740  Double_t xBinNotCompleteSC = NotCompleteSCH1DBin(index);
9741  TLine* lin_notcomplete =
9742  new TLine(xBinNotCompleteSC, yinf, xBinNotCompleteSC, ysup); fCnewRoot++;
9743  lin_notcomplete->SetLineColor(coul_notcomplete);
9744  lin_notcomplete->SetLineStyle(3);
9745  lin_notcomplete->Draw();
9746 
9747  Double_t xBinNotCompleteSCEnd = NotCompleteSCH1DBin(index)+fEcal->MaxCrysInSC();;
9748  TLine* lin_notcomplete_end =
9749  new TLine(xBinNotCompleteSCEnd, yinf, xBinNotCompleteSCEnd, ysup); fCnewRoot++;
9750  lin_notcomplete_end->SetLineColor(coul_notcomplete);
9751  lin_notcomplete_end->SetLineStyle(3);
9752  lin_notcomplete_end->Draw();
9753 
9754  sprintf( f_in, "%d", GetNotCompleteDSSCFromIndex(index) );
9755  // sprintf( f_in, "%d", GetNotCompleteSCForConsFromIndex(index) );
9756  TText *text_SC_NotComplete = new TText(xBinNotCompleteSC, ytext, f_in); fCnewRoot++;
9757  text_SC_NotComplete->SetTextAngle((Double_t)45.);
9758  text_SC_NotComplete->SetTextColor(coul_notcomplete);
9759  text_SC_NotComplete->SetTextFont(42);
9760  text_SC_NotComplete->SetTextSize((Double_t)0.03);
9761  text_SC_NotComplete->Draw("SAME");
9762  }
9763  //Double_t xtextp = xinf_his + (xsup_his-xinf_his)/15.;
9764  //sprintf( f_in, "Not complete SC");
9765  //TText *text_legend_NotComplete = new TText(xtextp, ytextp, f_in); fCnewRoot++;
9766  //text_legend_NotComplete->SetTextColor(coul_notcomplete);
9767  //text_legend_NotComplete->SetTextSize((Double_t)0.03);
9768  //text_legend_NotComplete->Draw("SAME");
9769  }
9770  }
9771  delete [] f_in; f_in = 0; fCdelete++;
9772  } // end of if( ( opt_plot == fOnlyOnePlot )
9773  // || ( (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) && xMemoPlotSame == 0 ) )
9774 
9775  //..............................................Top Axis (HistoPlot)
9776  Int_t min_value = 0;
9777  Int_t max_value = 0;
9778  if(HistoType == "Global")
9779  {
9780  if( fFapStexNumber > 0 )
9781  {
9782  //.......................... Axis for the Stin numbers and Data sectors (EE) numbers
9783  if( fFlagSubDet == "EB" )
9784  {
9785  min_value = 0;
9786  max_value = fEcal->MaxStinEcnaInStex() - 1;
9787  }
9788  if( fFlagSubDet == "EE" )
9789  {
9790  if( fFapStexNumber == 1 ){min_value = 1; max_value = 5;}
9791  if( fFapStexNumber == 2 ){min_value = 5; max_value = 9;}
9792  if( fFapStexNumber == 3 ){min_value = 5; max_value = 9;}
9793  if( fFapStexNumber == 4 ){min_value = 1; max_value = 5;}
9794  }
9795  }
9796  if( fFapStexNumber == 0 )
9797  {
9798  //.......................... Axis for the SM (EB) and Dee numbers (EE)
9799  if( fFlagSubDet == "EB" )
9800  {
9801  min_value = 0;
9802  max_value = fEcal->MaxStexInStas() - 1;
9803  }
9804  if( fFlagSubDet == "EE" )
9805  {
9806  min_value = 1;
9807  max_value = fEcal->MaxStexInStas();
9808  }
9809  }
9810  TopAxisForHistos(h_his0, opt_plot, xMemoPlotSame, min_value, max_value,
9811  xFlagAutoYsupMargin, HisSize);
9812  } // end of if (HistoType == "Global")
9813 
9814  if( !( (HistoType == "H1Basic" || HistoType == "H1BasicProj")
9815  && ( arg_AlreadyRead > 1 && arg_AlreadyRead < fEcal->MaxCrysInStin() ) ) )
9816  {
9817  gPad->Update();
9818  }
9819  }
9820  else // else du if(main_subpad !=0)
9821  {
9822  cout << "*TEcnaHistos::HistoPlot(...)> Canvas not found. Previously closed in option SAME."
9823  << fTTBELL << endl;
9824 
9825  ReInitCanvas(HistoCode, opt_plot);
9826  xMemoPlotSame = 0;
9827  }
9828 
9829  // delete MainCanvas; fCdeleteRoot++;
9830 
9831 } // end of HistoPlot
9832 
9833 
9834 TString TEcnaHistos::StexNumberToString(const Int_t& StexNumber)
9835 {
9836  // Convert Int_t StexNumber into TString: "StexNumber" if StexNumber in [-18,36]
9837  // or into TString: "EB" or "EE" if StexNumber = 0.
9838 
9839  TString sFapStexNumber = "?";
9840  if( StexNumber == -1 ){sFapStexNumber = " -1";}
9841  if( StexNumber == -2 ){sFapStexNumber = " -2";}
9842  if( StexNumber == -3 ){sFapStexNumber = " -3";}
9843  if( StexNumber == -4 ){sFapStexNumber = " -4";}
9844  if( StexNumber == -5 ){sFapStexNumber = " -5";}
9845  if( StexNumber == -6 ){sFapStexNumber = " -6";}
9846  if( StexNumber == -7 ){sFapStexNumber = " -7";}
9847  if( StexNumber == -8 ){sFapStexNumber = " -8";}
9848  if( StexNumber == -9 ){sFapStexNumber = " -9";}
9849  if( StexNumber == -10 ){sFapStexNumber = "-10";}
9850  if( StexNumber == -11 ){sFapStexNumber = "-11";}
9851  if( StexNumber == -12 ){sFapStexNumber = "-12";}
9852  if( StexNumber == -13 ){sFapStexNumber = "-13";}
9853  if( StexNumber == -14 ){sFapStexNumber = "-14";}
9854  if( StexNumber == -15 ){sFapStexNumber = "-15";}
9855  if( StexNumber == -16 ){sFapStexNumber = "-16";}
9856  if( StexNumber == -17 ){sFapStexNumber = "-17";}
9857  if( StexNumber == -18 ){sFapStexNumber = "-18";}
9858  if( StexNumber == 0 ){sFapStexNumber = fFlagSubDet;}
9859  if( StexNumber == 1 ){sFapStexNumber = " 1";}
9860  if( StexNumber == 2 ){sFapStexNumber = " 2";}
9861  if( StexNumber == 3 ){sFapStexNumber = " 3";}
9862  if( StexNumber == 4 ){sFapStexNumber = " 4";}
9863  if( StexNumber == 5 ){sFapStexNumber = " 5";}
9864  if( StexNumber == 6 ){sFapStexNumber = " 6";}
9865  if( StexNumber == 7 ){sFapStexNumber = " 7";}
9866  if( StexNumber == 8 ){sFapStexNumber = " 8";}
9867  if( StexNumber == 9 ){sFapStexNumber = " 9";}
9868  if( StexNumber == 10 ){sFapStexNumber = " 10";}
9869  if( StexNumber == 11 ){sFapStexNumber = " 11";}
9870  if( StexNumber == 12 ){sFapStexNumber = " 12";}
9871  if( StexNumber == 13 ){sFapStexNumber = " 13";}
9872  if( StexNumber == 14 ){sFapStexNumber = " 14";}
9873  if( StexNumber == 15 ){sFapStexNumber = " 15";}
9874  if( StexNumber == 16 ){sFapStexNumber = " 16";}
9875  if( StexNumber == 17 ){sFapStexNumber = " 17";}
9876  if( StexNumber == 18 ){sFapStexNumber = " 18";}
9877  if( StexNumber == 19 ){sFapStexNumber = " -1";}
9878  if( StexNumber == 20 ){sFapStexNumber = " -2";}
9879  if( StexNumber == 21 ){sFapStexNumber = " -3";}
9880  if( StexNumber == 22 ){sFapStexNumber = " -4";}
9881  if( StexNumber == 23 ){sFapStexNumber = " -5";}
9882  if( StexNumber == 24 ){sFapStexNumber = " -6";}
9883  if( StexNumber == 25 ){sFapStexNumber = " -7";}
9884  if( StexNumber == 26 ){sFapStexNumber = " -8";}
9885  if( StexNumber == 27 ){sFapStexNumber = " -9";}
9886  if( StexNumber == 28 ){sFapStexNumber = "-10";}
9887  if( StexNumber == 29 ){sFapStexNumber = "-11";}
9888  if( StexNumber == 30 ){sFapStexNumber = "-12";}
9889  if( StexNumber == 31 ){sFapStexNumber = "-13";}
9890  if( StexNumber == 32 ){sFapStexNumber = "-14";}
9891  if( StexNumber == 33 ){sFapStexNumber = "-15";}
9892  if( StexNumber == 34 ){sFapStexNumber = "-16";}
9893  if( StexNumber == 35 ){sFapStexNumber = "-17";}
9894  if( StexNumber == 36 ){sFapStexNumber = "-18";}
9895  return sFapStexNumber;
9896 }
9897 
9899 {
9900  // gives the x coordinate for the i_th NotConnected SC
9901  // GetDSOffset(DeeNumber, DataSector) , GetSCOffset(DeeNumber, DataSector, SC_in_DS)
9902 
9903  Double_t xbin = (Double_t)(-1);
9904 
9905  if( index == 1 ){xbin = GetDSOffset(1,1)+GetSCOffset(1,1, 30);} // nb_for_cons == 182 (D1,S1) (D3,S9)
9906  if( index == 2 ){xbin = GetDSOffset(2,9)+GetSCOffset(2,9, 30);} // nb_for_cons == 33 (D2,S9) (D4,S1)
9907 
9908  if( index == 3 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 3);} // nb_for_cons == 178 (D1,S2) (D3,S8)
9909  if( index == 4 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 3);} // nb_for_cons == 29 (D2,S8) (D4,S2)
9910 
9911  if( index == 5 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 25);} // nb_for_cons == 207 (D1,S2) (D3,S8)
9912  if( index == 6 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 25);} // nb_for_cons == 58 (D2,S8) (D4,S2)
9913 
9914  if( index == 7 ){xbin = GetDSOffset(1,3)+GetSCOffset(1,3, 34);} // nb_for_cons == 298 (D1,S3) (D3,S7)
9915  if( index == 8 ){xbin = GetDSOffset(2,7)+GetSCOffset(2,7, 34);} // nb_for_cons == 149 (D2,S7) (D4,S3)
9916 
9917  if( index == 9 ){xbin = GetDSOffset(1,4)+GetSCOffset(1,4, 14);} // nb_for_cons == 261 (D1,S4) (D3,S6)
9918  if( index == 10 ){xbin = GetDSOffset(2,6)+GetSCOffset(2,6, 14);} // nb_for_cons == 112 (D2,S6) (D4,S4)
9919  if( index == 11 ){xbin = GetDSOffset(1,4)+GetSCOffset(1,4, 21);} // nb_for_cons == 268 (D1,S4) (D3,S6)
9920  if( index == 12 ){xbin = GetDSOffset(2,6)+GetSCOffset(2,6, 21);} // nb_for_cons == 119 (D2,S6) (D4,S4)
9921 
9922  if( index == 13 ){xbin = GetDSOffset(1,5)+GetSCOffset(1,5, 20);} // nb_for_cons == 281 (D1,S5) (D3,S5)
9923  if( index == 14 ){xbin = GetDSOffset(2,5)+GetSCOffset(2,5, 3);} // nb_for_cons == 132 (D2,S5) (D4,S5)
9924 
9925  return xbin;
9926 }
9927 
9929 {
9930  // gives the x coordinate for the i_th NotConnected SC
9931 
9932  Double_t xbin = (Double_t)(-1);
9933 
9934  if( index == 1 ){xbin = GetDSOffset(1,1)+GetSCOffset(1,1, 12);} // nb_for_cons == 161 (D1,S1) (D3,S9)
9935  if( index == 2 ){xbin = GetDSOffset(2,9)+GetSCOffset(2,9, 12);} // nb_for_cons == 12 (D2,S9) (D4,S1)
9936 
9937  if( index == 3 ){xbin = GetDSOffset(1,2)+GetSCOffset(1,2, 32);} // nb_for_cons == 216 (D1,S2) (D3,S8)
9938  if( index == 4 ){xbin = GetDSOffset(2,8)+GetSCOffset(2,8, 32);} // nb_for_cons == 67 (D2,S8) (D4,S2)
9939 
9940  if( index == 5 ){xbin = GetDSOffset(1,3)+GetSCOffset(1,3, 10);} // nb_for_cons == 224 (D1,S3) (D3,S7)
9941  if( index == 6 ){xbin = GetDSOffset(2,7)+GetSCOffset(2,7, 10);} // nb_for_cons == 75 (D2,S7) (D4,S3)
9942 
9943  if( index == 7 ){xbin = GetDSOffset(1,5)+GetSCOffset(1,5, 23);} // nb_for_cons == 286 (D1,S5) (D3,S5)
9944  if( index == 8 ){xbin = GetDSOffset(2,5)+GetSCOffset(2,5, 6);} // nb_for_cons == 137 (D2,S5) (D4,S5)
9945 
9946  return xbin;
9947 }
9948 
9950 {
9951 
9952  Int_t SCForCons = 0;
9953  if( index == 1 ){SCForCons = 182;} // (D1,S1) (D3,S9)
9954  if( index == 2 ){SCForCons = 33;} // (D2,S9) (D4,S1)
9955 
9956  if( index == 3 ){SCForCons = 178;} // (D1,S2) (D3,S8)
9957  if( index == 4 ){SCForCons = 29;} // (D2,S8) (D4,S2)
9958  if( index == 5 ){SCForCons = 207;} // (D1,S2) (D3,S8)
9959  if( index == 6 ){SCForCons = 58;} // (D2,S8) (D4,S2)
9960 
9961  if( index == 7 ){SCForCons = 298;} // (D1,S3) (D3,S7)
9962  if( index == 8 ){SCForCons = 149;} // (D2,S7) (D4,S3)
9963 
9964  if( index == 9 ){SCForCons = 261;} // (D1,S4) (D3,S6)
9965  if( index == 10 ){SCForCons = 112;} // (D2,S6) (D4,S4)
9966  if( index == 11 ){SCForCons = 268;} // (D1,S4) (D3,S6)
9967  if( index == 12 ){SCForCons = 119;} // (D2,S6) (D4,S4)
9968 
9969  if( index == 13 ){SCForCons = 281;} // (D1,S5) (D3,S5)
9970  if( index == 14 ){SCForCons = 132;} // (D2,S5) (D4,S5)
9971  return SCForCons;
9972 }
9973 
9975 {
9976 
9977  Int_t DSSC = 0;
9978  if( index == 1 ){DSSC = 30;} // (D1,S1) (D3,S9)
9979  if( index == 2 ){DSSC = 30;} // (D2,S9) (D4,S1)
9980 
9981  if( index == 3 ){DSSC = 3;} // (D1,S2) (D3,S8)
9982  if( index == 4 ){DSSC = 3;} // (D2,S8) (D4,S2)
9983  if( index == 5 ){DSSC = 25;} // (D1,S2) (D3,S8)
9984  if( index == 6 ){DSSC = 25;} // (D2,S8) (D4,S2)
9985 
9986  if( index == 7 ){DSSC = 34;} // (D1,S3) (D3,S7)
9987  if( index == 8 ){DSSC = 34;} // (D2,S7) (D4,S3)
9988 
9989  if( index == 9 ){DSSC = 14;} // (D1,S4) (D3,S6)
9990  if( index == 10 ){DSSC = 14;} // (D2,S6) (D4,S4)
9991  if( index == 11 ){DSSC = 21;} // (D1,S4) (D3,S6)
9992  if( index == 12 ){DSSC = 21;} // (D2,S6) (D4,S4)
9993 
9994  if( index == 13 ){DSSC = 20;} // (D1,S5) (D3,S5)
9995  if( index == 14 ){DSSC = 3;} // (D2,S5) (D4,S5)
9996  return DSSC;
9997 }
9998 
9999 
10001 {
10002 
10003  Int_t DSSC = 0;
10004  if( index == 1 ){DSSC = 161;} // (D1,S1) (D3,S9)
10005  if( index == 2 ){DSSC = 12;} // (D2,S9) (D4,S1)
10006 
10007  if( index == 3 ){DSSC = 216;} // (D1,S2) (D3,S8)
10008  if( index == 4 ){DSSC = 67;} // (D2,S8) (D4,S2)
10009 
10010  if( index == 5 ){DSSC = 224;} // (D1,S3) (D3,S7)
10011  if( index == 6 ){DSSC = 75;} // (D2,S7) (D4,S3)
10012 
10013  if( index == 7 ){DSSC = 286;} // (D1,S5) (D3,S5)
10014  if( index == 8 ){DSSC = 137;} // (D2,S5) (D4,S5)
10015  return DSSC;
10016 }
10017 
10019 {
10020 
10021  Int_t DSSC = 0;
10022  if( index == 1 ){DSSC = 12;} // (D1,S1) (D3,S9)
10023  if( index == 2 ){DSSC = 12;} // (D2,S9) (D4,S1)
10024 
10025  if( index == 3 ){DSSC = 32;} // (D1,S2) (D3,S8)
10026  if( index == 4 ){DSSC = 32;} // (D2,S8) (D4,S2)
10027 
10028  if( index == 5 ){DSSC = 10;} // (D1,S3) (D3,S7)
10029  if( index == 6 ){DSSC = 10;} // (D2,S7) (D4,S3)
10030 
10031  if( index == 7 ){DSSC = 23;} // (D1,S5) (D3,S5)
10032  if( index == 8 ){DSSC = 6;} // (D2,S5) (D4,S5)
10033  return DSSC;
10034 }
10035 //----------------------------------------------- HistimePlot
10036 void TEcnaHistos::HistimePlot(TGraph* g_graph0,
10037  Axis_t xinf, Axis_t xsup,
10038  const TString& HistoCode, const TString& HistoType,
10039  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample,
10040  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
10041  const TString& opt_plot, const Int_t& xFlagAutoYsupMargin)
10042 {
10043  // Plot 1D histogram for evolution in time
10044 
10045  UInt_t canv_w = fCnaParHistos->SetCanvasWidth(HistoCode, opt_plot);
10046  UInt_t canv_h = fCnaParHistos->SetCanvasHeight(HistoCode, opt_plot);
10047 
10048  SetGraphPresentation(g_graph0, HistoType.Data(), opt_plot.Data()); // (gStyle parameters)}
10049 
10050  //...................................................... paves commentaires (HistimePlot)
10051  SetAllPavesViewHisto(HistoCode, StexStin_A, i0StinEcha, i0Sample, opt_plot);
10052 
10053  //..................................................... Canvas name (HistimePlot)
10054  Int_t arg_AlreadyRead = 0;
10055  TString canvas_name = SetCanvasName(HistoCode.Data(), opt_scale_x, opt_scale_y, opt_plot, arg_AlreadyRead,
10056  StexStin_A, i0StinEcha, i0Sample);
10057 
10058  //------------------------------------------------ Canvas allocation (HistimePlot)
10059  //......................................... declarations canvas et pad
10060  TCanvas* MainCanvas = 0;
10061 
10062  if( opt_plot == fOnlyOnePlot )
10063  {MainCanvas = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w , canv_h); fCnewRoot++;
10064  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();}
10065 
10066  if( opt_plot == fSeveralPlot )
10067  {
10068  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
10069  {
10070  MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
10071  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
10072  }
10073  }
10074 
10075  if( opt_plot == fSameOnePlot )
10076  {
10077  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
10078  {
10079  MainCanvas = CreateCanvas(HistoCode, opt_plot, canvas_name, canv_w, canv_h);
10080  fCurrentPad = gPad; fCurrentCanvas = MainCanvas; fCurrentCanvasName = canvas_name.Data();
10081  }
10082  }
10083 
10084  // cout << "*TEcnaHistos::HistimePlot(...)> Plot is displayed on canvas ----> " << canvas_name.Data() << endl;
10085 
10086  //--------------- EE => SC for construction, EB => Xtal in SM (default: Stin ECNA number, i0StinEcha)
10087  Int_t Stex_StinCons = StexStin_A; // Stex_StinCons = Tower for EB, SC for construction for EE
10088  Int_t n1StexCrys = i0StinEcha+1; // n1StexCrys = Crys in SM for EB
10089 
10090  if( StexStin_A >= 1 && StexStin_A <= fEcal->MaxStinEcnaInStex() )
10091  {
10092  if( fFlagSubDet == "EB" )
10093  {n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);}
10094  if( fFlagSubDet == "EE" )
10095  {Stex_StinCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A);}
10096  }
10097 
10098  //------ String for StexNumber ( to display "EB" or "EE" if Stex = 0 )
10099  TString sFapStexNumber = StexNumberToString(fFapStexNumber);
10100 
10101  //============================================================================= (HistimePlot)
10102  //
10103  // 1st OPERATIONS: Pave texts preparation and first Draw.
10104  // SetParametersCanvas
10105  // Set Memo Flags.
10106  // Set main_subpad and main_pavtxt
10107  //
10108  //=============================================================================
10109  TVirtualPad* main_subpad = 0; // main_subpad: Pad for the histo
10110  TPaveText* main_pavtxt = 0; // main_pavtxt: pave for changing parameters
10111 
10112  Int_t xMemoPlotSame = 1; // a priori ==> SAME plot
10113 
10114  TString QuantityName = fCnaParHistos->GetQuantityName(HistoCode.Data());
10115 
10116  //========================================= Option ONLYONE (HistimePlot)
10117  if( opt_plot == fOnlyOnePlot )
10118  {
10119  //................................. Draw titles and paves (pad = main canvas)
10120  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
10121  fPavComStex->Draw();
10122 
10123  if( !( HistoType == "Global" || HistoType == "Proj" ) )
10124  {
10125  fPavComStin->Draw();
10126  fPavComXtal->Draw();
10127  }
10128  fPavComEvolNbOfEvtsAna->Draw();
10129  fPavComEvolRuns->Draw();
10130 
10131  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
10132  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
10133  Double_t y_low = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
10134  Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;
10135 
10136  Double_t x_margin = x_low;
10137  Double_t y_margin = y_low;
10138 
10139  Color_t fond_pad = fCnaParHistos->ColorDefinition("gris18");
10140 
10141  MainCanvas->Divide( 1, 1, x_margin, y_margin, fond_pad);
10142  // Divide(nx, ny, x_margin, y_margin, color);
10143 
10144  gPad->cd(1);
10145  main_subpad = gPad;
10146  main_subpad->SetPad(x_low, y_low, x_up, y_up);
10147 
10148  xMemoPlotSame = 0;
10149  }
10150  //========================================= Options SAME and SAME n (HistimePlot)
10151  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10152  {
10153  if(GetMemoFlag(HistoCode, opt_plot) == "Free")
10154  {
10155  if( fPavComGeneralTitle != 0 ){fPavComGeneralTitle->Draw();}
10156  fPavComSeveralChanging->Draw();
10157 
10158  fPavComEvolRuns->Draw();
10159 
10160  if( !( HistoType == "Global" || HistoType == "Proj" ||
10161  HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10162  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date") )
10163  {
10164  fPavComStin->Draw();
10165  fPavComXtal->Draw();
10166  }
10167 
10168  if( !( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10169  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ) )
10170  {
10171  fPavComXtal->Draw();
10172  }
10173  //Call to SetParametersPavTxt
10174  //fPavTxt<HISTOCODE> = fPavComSeveralChanging; => come from SetAllPavesViewHisto
10175  SetParametersPavTxt(HistoCode, opt_plot);
10176 
10177  //---------------- Call to ActivePavTxt
10178  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
10179  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
10180 
10181  //-------------------- Set texts for pave "several changing", options SAME and SAME n (HistimePlot)
10182  main_pavtxt->SetTextAlign(fTextPaveAlign);
10183  main_pavtxt->SetTextFont(fTextPaveFont);
10184  main_pavtxt->SetTextSize(fTextPaveSize);
10185  main_pavtxt->SetBorderSize(fTextBorderSize);
10186 
10187  char* f_in = new char[fgMaxCar]; fCnew++;
10188 
10189  TString DecalStexName = "";
10190  if( fFlagSubDet == "EB" ){DecalStexName = " ";}
10191  TString DecalStinName = "";
10192  if( fFlagSubDet == "EE" ){DecalStinName = " ";}
10193 
10194  TString sStexOrStasName = "";
10195  if( fFapStexNumber == 0 ){sStexOrStasName = " ";}
10196  if( fFapStexNumber != 0 ){sStexOrStasName = fFapStexName;}
10197 
10198 
10199  //-----------------------------> HistoType = "EvolProj" => treated in HistoPlot, not here.
10200  if(opt_plot == fSeveralPlot)
10201  {
10202  sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
10203  DecalStexName.Data(), sStexOrStasName.Data(),
10204  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());
10205  }
10206  if(opt_plot == fSameOnePlot)
10207  {
10208  sprintf(f_in, "Analysis Samp Evts range Nb Evts %s%s %s%s %s %s",
10209  DecalStexName.Data(), sStexOrStasName.Data(),
10210  DecalStinName.Data(), fFapStinName.Data(), fFapXtalName.Data(), fFapEchaName.Data());
10211  }
10212 
10213  //................................................................... (HistimePlot)
10214  TText* ttit = main_pavtxt->AddText(f_in);
10215  ttit->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10216 
10217  if(opt_plot == fSeveralPlot)
10218  {
10219  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d",
10220  fFapAnaType.Data(), fFapNbOfSamples,
10222  Stex_StinCons, n1StexCrys, i0StinEcha);
10223  }
10224  if(opt_plot == fSameOnePlot)
10225  {
10226  sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d %-25s",
10227  fFapAnaType.Data(), fFapNbOfSamples,
10229  Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());
10230  }
10231 
10232  TText* tt = main_pavtxt->AddText(f_in);
10233  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
10234 
10235  delete [] f_in; f_in = 0; fCdelete++;
10236 
10237  //---------- Draw the "several changing" pave with its text in the Canvas (FIRST TIME) (HistimePlot)
10238  main_pavtxt->Draw();
10239 
10240  //---------------- Call to SetParametersCanvas
10241  //fImp<HISTOCODE> = (TCanvasImp*)fCanv<HISTOCODE>->GetCanvasImp();
10242  //fCanv<HISTOCODE>->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
10243  //fPad<HISTOCODE> = gPad;
10244  //fMemoPlot<HISTOCODE> = 1; =======> set MemoFlag to "Buzy"
10245  //fMemoColor<HISTOCODE> = 0;
10246  SetParametersCanvas(HistoCode, opt_plot);
10247 
10248  //---------------- Set xMemoPlotSame to 0
10249  xMemoPlotSame = 0;
10250  }
10251 
10252  //............................ cases fMemoPlotxxx = 1 (HistimePlot)
10253  if(GetMemoFlag(HistoCode, opt_plot) == "Busy")
10254  {
10255  //---------------- Call to ActivePavTxt
10256  // main_pavtxt = fPavTxt<HISTOCODE>;} (return main_pavtxt)
10257  main_pavtxt = ActivePavTxt(HistoCode.Data(), opt_plot.Data());
10258 
10259  //---------------- Call to ActivePad
10260  main_subpad = ActivePad(HistoCode.Data(), opt_plot.Data()); // => return 0 if canvas has been closed
10261 
10262  //---------------- Recover pointer to the current canvas
10263  MainCanvas = GetCurrentCanvas(HistoCode.Data(), opt_plot.Data());
10264  }
10265  }
10266 
10267  //============================================================================= (HistimePlot)
10268  //
10269  // 2nd OPERATIONS: Write and Draw the parameter values in the
10270  // "several changing" pave (options SAME and SAME n)
10271  // Draw Histo
10272  //=============================================================================
10273  if(main_subpad != 0)
10274  {
10275  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10276  {
10277  if(xMemoPlotSame != 0)
10278  {
10279  main_pavtxt->SetTextAlign(fTextPaveAlign);
10280  main_pavtxt->SetTextFont(fTextPaveFont);
10281  main_pavtxt->SetTextSize(fTextPaveSize);
10282  main_pavtxt->SetBorderSize(fTextBorderSize);
10283 
10284  char* f_in = new char[fgMaxCar]; fCnew++;
10285 
10286  if(opt_plot == fSeveralPlot )
10287  {sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d",
10289  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha);}
10290  if(opt_plot == fSameOnePlot )
10291  {sprintf(f_in, "%-10s 1-%2d %5d-%5d %7d %5s%6d%7d%6d %-25s",
10293  sFapStexNumber.Data(), Stex_StinCons, n1StexCrys, i0StinEcha, QuantityName.Data());}
10294 
10295  TText *tt = main_pavtxt->AddText(f_in);
10296  tt->SetTextColor(GetViewHistoColor(HistoCode, opt_plot));
10297  MainCanvas->cd(); gStyle->SetOptDate(0);
10298  main_pavtxt->Draw();
10299 
10300  delete [] f_in; f_in = 0; fCdelete++;
10301  }
10302  main_subpad->cd();
10303  Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
10304  Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
10305  Double_t y_low = fCnaParHistos->BoxTopY("several_evol_box") + 0.005;
10306  Double_t y_up = fCnaParHistos->BoxBottomY("general_comment") - 0.005;
10307  if( opt_plot == fSameOnePlot ){y_up = fCnaParHistos->BoxBottomY("top_left_box_EB") - 0.005;}
10308  main_subpad->SetPad(x_low, y_low, x_up, y_up);
10309  }
10310 
10311  //............................................ Style (HistimePlot)
10312  SetViewGraphColors(g_graph0, HistoCode, opt_plot);
10313 
10314  //................................. Set axis titles
10315  TString axis_x_var_name = SetHistoXAxisTitle(HistoCode);
10316  TString axis_y_var_name = SetHistoYAxisTitle(HistoCode);
10317  g_graph0->GetXaxis()->SetTitle(axis_x_var_name);
10318  g_graph0->GetYaxis()->SetTitle(axis_y_var_name);
10319 
10320  //................................. Xaxis is a time axis
10321  g_graph0->GetXaxis()->SetTimeDisplay(1);
10322  g_graph0->GetXaxis()->SetTimeFormat("%d %b-%Hh");
10323 
10324  g_graph0->GetXaxis()->SetTimeOffset(xinf);
10325 
10326  Int_t nb_displayed = fCnaParHistos->GetNbOfRunsDisplayed(); // max nb of run numbers displayed
10327 
10328  //........................................................................... (HistimePlot)
10329  Int_t liny = 0;
10330  Int_t logy = 1;
10331 
10332  if(opt_plot == fOnlyOnePlot)
10333  {
10334  fXinf = (Double_t)xinf;
10335  fXsup = (Double_t)xsup;
10336  fYinf = (Double_t)GetYminValueFromMemo(HistoCode);
10337  fYsup = (Double_t)GetYmaxValueFromMemo(HistoCode);
10338 
10339  gPad->RangeAxis(fXinf, fYinf, fXsup, fYsup);
10340 
10341  //if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10342  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy); g_graph0->Draw("ALP");}
10343 
10344  if(opt_scale_y == fOptScaleLiny)
10345  {
10346  gPad->SetLogy(liny);
10347  g_graph0->Draw("ALP");
10348  Int_t nb_pts = g_graph0->GetN();
10349  Double_t* coord_x = g_graph0->GetX();
10350  Double_t* coord_y = g_graph0->GetY();
10351 
10352  char* f_in = new char[fgMaxCar]; fCnew++;
10353 
10354  //................. display of the run numbers (HistimePlot)
10355  Double_t interv_displayed = (coord_x[nb_pts-1] - coord_x[0])/(Double_t)nb_displayed;
10356  Double_t last_drawn_coordx = coord_x[0] - 1.5*interv_displayed;
10357 
10358  for(Int_t i_run=0; i_run<nb_pts; i_run++)
10359  {
10360  if ( (coord_x[i_run] - last_drawn_coordx) > interv_displayed )
10361  {
10362  Double_t joinYinf = fYinf;
10363  Double_t joinYsup = fYsup;
10364  if( joinYsup <= joinYinf )
10365  {
10366  joinYinf =
10368  joinYsup =
10370  joinYsup = joinYsup + (joinYsup-joinYinf)/20.;
10371  }
10372 
10373  sprintf( f_in, "R%d", fT1DRunNumber[i_run]);
10374  TText *text_run_num = new TText(coord_x[i_run], joinYsup, f_in); fCnewRoot++;
10375  text_run_num->SetTextAngle((Double_t)45.);
10376  text_run_num->SetTextSize((Double_t)0.035);
10377  text_run_num->Draw("SAME");
10378  // delete text_StexStin_num; fCdeleteRoot++;
10379 
10380  TLine *jointlign;
10381  jointlign = new TLine(coord_x[i_run], joinYsup, coord_x[i_run], coord_y[i_run]); fCnewRoot++;
10382  jointlign->SetLineWidth(1);
10383  jointlign->SetLineStyle(2);
10384  jointlign->Draw("SAME");
10385  // delete jointlign; fCdeleteRoot++;
10386 
10387  last_drawn_coordx = coord_x[i_run]; // (HistimePlot)
10388  }
10389  }
10390 
10391  delete [] f_in; f_in = 0; fCdelete++;
10392 
10393  }
10394  if(opt_scale_y == fOptScaleLogy)
10395  {
10396  gPad->SetLogy(logy);
10397  g_graph0->Draw("ALP");
10398  }
10399  }
10400 
10401  //...................................................................... (HistimePlot)
10402  if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot)
10403  {
10404  if(xMemoPlotSame == 0)
10405  {
10406  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10407  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy);
10408 }
10409  g_graph0->Draw("ALP");
10410 
10411  fXinf = (Double_t)xinf;
10412  fXsup = (Double_t)xsup;
10413  fYinf = (Double_t)GetYminValueFromMemo(HistoCode);
10414  fYsup = (Double_t)GetYmaxValueFromMemo(HistoCode);
10415 
10416  gPad->RangeAxis(fXinf, fYinf, fXsup, fYsup);
10417  }
10418 
10419  if(xMemoPlotSame != 0) // (HistimePlot)
10420  {
10421  if(opt_scale_y == fOptScaleLiny){gPad->SetLogy(liny);}
10422  if(opt_scale_y == fOptScaleLogy){gPad->SetLogy(logy);}
10423 
10424  g_graph0->Draw("LP");
10425  }
10426  }
10427  gPad->Update();
10428  }
10429  else // else du if(main_subpad !=0)
10430  {
10431  cout << "*TEcnaHistos::HistimePlot(...)> Canvas not found. Previously closed in option SAME."
10432  << fTTBELL << endl;
10433 
10434  ReInitCanvas(HistoCode, opt_plot);
10435  xMemoPlotSame = 0;
10436  }
10437 
10438  // delete MainCanvas; fCdeleteRoot++;
10439 
10440 } // end of HistimePlot
10441 
10442 //------------------------------------------------------------------------------------------------------
10443 void TEcnaHistos::TopAxisForHistos(TH1D* h_his0, const TString& opt_plot,
10444  const Int_t& xMemoPlotSame, const Int_t& min_value, const Int_t& max_value,
10445  const Int_t& xFlagAutoYsupMargin, const Int_t& HisSize)
10446 {
10447 // Axis on top of the plot to indicate the Stin numbers
10448 
10449  if( opt_plot == fOnlyOnePlot ||
10450  ( (opt_plot == fSeveralPlot) && (xMemoPlotSame == 0) ) ||
10451  ( (opt_plot == fSameOnePlot) && (xMemoPlotSame == 0) ) )
10452  {
10453  Double_t Maxih = (Double_t)h_his0->GetMaximum();
10454  Double_t Minih = (Double_t)h_his0->GetMinimum();
10455 
10456  if(xFlagAutoYsupMargin == 1)
10457  {
10458  if( Minih >= Maxih ){Minih = (Double_t)0.; Maxih += Maxih;} // ROOT default if ymin >= ymax
10459  Double_t MaxMarginFactor = (Double_t)0.05; // frame top line = 5% above the maximum
10460  Maxih += (Maxih-Minih)*MaxMarginFactor; // ROOT default if ymin < ymax
10461  }
10462 
10463  Double_t v_min = min_value;
10464  Double_t v_max = max_value+(Double_t)1.;
10465  Double_t v_min_p = v_min+(Double_t)1.;
10466  Double_t v_max_p = v_max+(Double_t)1.;
10467 
10468  Int_t ndiv = 50207;
10469  TString opt = "B-";
10470  Double_t Xbegin = 0.;
10471  Double_t Xend = (Double_t)HisSize;
10472  Double_t ticks = 0.05;
10473 
10474  if( fFapStexNumber == 0 && fFlagSubDet == "EE" )
10475  {
10476  v_min = 0;
10477  v_max = max_value;
10478  ndiv = 4;
10479  opt = "CSU"; // first draw axis with ticksize and no label
10480  Xbegin = (Double_t)HisSize;
10481  Xend = 0.;
10482  }
10483 
10484  if( fFapStexNumber > 0 && fFlagSubDet == "EE" )
10485  {
10486  ticks = 0;
10487  if( fFapStexNumber == 1 )
10488  {
10489  v_min = min_value;
10490  v_max = max_value+0.5;
10491  Xbegin = (Double_t)HisSize;
10492  Xend = 0.;
10493  opt = "CSU"; // first draw axis with no ticksize and no label
10494  }
10495  if( fFapStexNumber == 2 )
10496  {
10497  v_min = min_value+0.5;
10498  v_max = max_value+1.;
10499  Xbegin = (Double_t)HisSize;
10500  Xend = 0.;
10501  opt = "CSU"; // first draw axis with no ticksize and no label
10502  }
10503  if( fFapStexNumber == 3 )
10504  {
10505  v_min = min_value+0.5;
10506  v_max = max_value+1.;
10507  Xbegin = 0.;
10508  Xend = (Double_t)HisSize;
10509  opt = "-CSU"; // first draw axis with no ticksize and no label
10510  }
10511  if( fFapStexNumber == 4 )
10512  {
10513  v_min = min_value;
10514  v_max = max_value+0.5;
10515  Xbegin = 0.;
10516  Xend = (Double_t)HisSize;
10517  opt = "-CSU"; // first draw axis with no ticksize and no label
10518  }
10519  v_min -= 1;
10520  v_max -= 1;
10521  ndiv = 5;
10522  }
10523 
10524  TGaxis* top_axis_x = 0;
10525 
10526  top_axis_x = new TGaxis(Xbegin, Maxih, Xend, Maxih,
10527  v_min, v_max, ndiv, opt, 0.); fCnewRoot++;
10528 
10529  top_axis_x->SetTickSize(ticks);
10530  top_axis_x->SetTitleOffset((Float_t)(1.2));
10531  top_axis_x->SetLabelOffset((Float_t)(0.005));
10532 
10533  TString x_var_name = "?";
10534  Int_t MaxCar = fgMaxCar;
10535  x_var_name.Resize(MaxCar);
10536  if( fFapStexNumber > 0 )
10537  {
10538  if( fFlagSubDet == "EB"){x_var_name = "Tower number";}
10539  if( fFlagSubDet == "EE")
10540  {
10541  x_var_name = " ";
10542  // x_var_name = " Data sector"; // don't remove the space characters !
10543  }
10544  }
10545  if( fFapStexNumber == 0 )
10546  {
10547  if( fFlagSubDet == "EB"){x_var_name = "SM number";}
10548  if( fFlagSubDet == "EE"){x_var_name = " ";}
10549  }
10550  top_axis_x->SetTitle(x_var_name);
10551  top_axis_x->Draw("SAME");
10552 
10553  if( fFlagSubDet == "EE" )
10554  {
10555  // redraw axis with ticksize = 0, with labelOffset<0 or >0 and div centered in middle division
10556  opt = "-MS";
10557  if(fFapStexNumber == 1 || fFapStexNumber == 2 ){opt = "-MS";}
10558  if(fFapStexNumber == 3 || fFapStexNumber == 4 ){opt = "MS";}
10559  ndiv = 4;
10560  if( fFapStexNumber > 0 ){ndiv = 5;}
10561  TGaxis* top_axis_x_bis = 0;
10562  top_axis_x_bis = new TGaxis(Xbegin, Maxih, Xend, Maxih,
10563  v_min_p, v_max_p, ndiv, opt, 0.); fCnewRoot++;
10564  top_axis_x_bis->SetTickSize(0.);
10565  Float_t lab_siz_x = top_axis_x->GetLabelSize();
10566  top_axis_x_bis->SetLabelSize(lab_siz_x);
10567  top_axis_x_bis->SetLabelOffset(-0.1);
10568 
10569  top_axis_x_bis->SetLabelOffset((Float_t)(9999.));
10570  // if(fFapStexNumber == 1 || fFapStexNumber == 2 ){top_axis_x_bis->SetLabelOffset(-0.07);}
10571  // if(fFapStexNumber == 3 || fFapStexNumber == 4 ){top_axis_x_bis->SetLabelOffset(-0.05);}
10572  // if(fFapStexNumber == 0 )
10573  // {top_axis_x_bis->SetLabelOffset((Float_t)(9999.));} // keep the tick and remove the value
10574  top_axis_x_bis->Draw("SAME");
10575  }
10576  }
10577 } // end of TopAxisForHistos
10578 
10579 //............................................................................................
10580 void TEcnaHistos::SetAllPavesViewMatrix(const TString& BetweenWhat,
10581  const Int_t& StexStin_A, const Int_t& StexStin_B,
10582  const Int_t& i0StinEcha)
10583 {
10584 // Put all the paves of a matrix view
10585 
10587 
10589 
10590  if(BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels)
10591  {fPavComStin = fCnaParHistos->SetPaveStinsXY(StexStin_A, StexStin_B);}
10592  if(BetweenWhat == fBetweenSamples)
10593  {
10595 
10596  if( fFlagSubDet == "EB" )
10597  {Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);
10598  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);}
10599  if( fFlagSubDet == "EE" )
10601  Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(StexStin_A, i0StinEcha, fFapStexNumber);
10602  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);}
10603  }
10604 
10608 }
10609 
10610 void TEcnaHistos::SetAllPavesViewStin(const Int_t& StexStin_A)
10611 {
10612 // Put all the paves of a Stin view
10613 
10616 
10618 
10622 }
10623 
10624 void TEcnaHistos::SetAllPavesViewStinCrysNb(const Int_t& StexNumber, const Int_t& StexStin_A)
10625 {
10626 // Put all the paves of a crystal numbering Stin view
10627 
10628  fPavComStex = fCnaParHistos->SetPaveStex("standard", StexNumber);
10629  fPavComStin = fCnaParHistos->SetPaveStin(StexStin_A, StexNumber);
10630 
10631  if( fFlagSubDet == "EB")
10632  {fPavComLVRB = fCnaParHistos->SetPaveLVRB(StexNumber, StexStin_A);}
10633  if( fFlagSubDet == "EE")
10634  {fPavComCxyz = fCnaParHistos->SetPaveCxyz(StexNumber);}
10635 }
10636 
10637 void TEcnaHistos::SetAllPavesViewStex(const TString& chopt, const Int_t& StexNumber)
10638 {
10639  if( chopt == "Numbering" )
10640  {
10641  fCnaParHistos->SetViewHistoStyle("Stex2DEENb");
10642  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10643  fPavComStex = fCnaParHistos->SetPaveStex("standStex", StexNumber);
10644  if( fFlagSubDet == "EE" ){fPavComCxyz = fCnaParHistos->SetPaveCxyz(StexNumber);}
10645  }
10646  else
10647  {
10648  SetAllPavesViewStex(StexNumber);
10649  }
10650 }
10651 // end of SetAllPavesViewStex(...,...)
10652 
10653 void TEcnaHistos::SetAllPavesViewStex(const Int_t& StexNumber)
10654 {
10655  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10657  fPavComStex = fCnaParHistos->SetPaveStex("standStex", StexNumber);
10658 
10659  TString opt_pave_nbcol = "OneCol";
10660  if( fFapStexName == "SM"){opt_pave_nbcol = "TwoCol";}
10661 
10665 }
10666 // end of SetAllPavesViewStex(...)
10667 
10669 {
10670  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10673 
10677 }
10678 // end of SetAllPavesViewStas
10679 
10680 void TEcnaHistos::SetAllPavesViewHisto(const TString& HistoCode, const Int_t& StexStin_A,
10681  const Int_t& i0StinEcha, const Int_t& i0Sample,
10682  const TString& opt_plot)
10683 {
10684  Int_t arg_AlreadyRead = 0;
10685  SetAllPavesViewHisto(HistoCode, StexStin_A, i0StinEcha, i0Sample, opt_plot, arg_AlreadyRead);
10686 }
10687 
10688 void TEcnaHistos::SetAllPavesViewHisto(const TString& HistoCode, const Int_t& StexStin_A,
10689  const Int_t& i0StinEcha, const Int_t& i0Sample,
10690  const TString& opt_plot, const Int_t& arg_AlreadyRead)
10691 {
10692 // Put all the paves of a histo view according to HistoCode
10693 
10694  gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
10695 
10696  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
10697 
10699 
10700  if(opt_plot == fOnlyOnePlot)
10701  {
10702  if( !( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ||
10703  HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ||
10704  HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ||
10705  HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ||
10706  HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ||
10707  HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ||
10708  HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" ) )
10709  {
10712  }
10713  else
10714  {
10715  if( HistoCode == "D_NOE_ChNb" ||
10716  HistoCode == "D_Ped_ChNb" || HistoCode == "D_TNo_ChNb" ||
10717  HistoCode == "D_MCs_ChNb" || HistoCode == "D_LFN_ChNb" ||
10718  HistoCode == "D_HFN_ChNb" || HistoCode == "D_SCs_ChNb" )
10720  else
10722  }
10723  //.................................................... (SetAllPavesViewHisto)
10724 
10725  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10726  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10727  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10728  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10729  {
10730  Int_t n1StexCrys =
10732  fPavComXtal = fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha);
10733  }
10734 
10735  if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
10736  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" )
10737  {
10738  Int_t n1StexCrys =
10740  fPavComXtal =
10741  fCnaParHistos->SetPaveCrystal(n1StexCrys, StexStin_A, i0StinEcha, arg_AlreadyRead, fPlotAllXtalsInStin);
10742  }
10743 
10744  if( HistoCode == "D_Adc_EvDs" || HistoCode == "D_Adc_EvNb")
10745  {
10746  Int_t n1StexCrys =
10748  fPavComXtal = fCnaParHistos->SetPaveCrystalSample(n1StexCrys, StexStin_A, i0StinEcha, i0Sample);
10749  }
10750 
10751  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10752  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10753  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10754  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10755  {
10760  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10761  }
10762  else
10763  {
10767  }
10768  }
10769 
10770  //.................................................... (SetAllPavesViewHisto)
10771 
10772  if( opt_plot == fSeveralPlot && GetMemoFlag(HistoCode, opt_plot) == "Free" )
10773  {
10774  if( HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
10775  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
10776  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
10777  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
10778  {
10781  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10782  }
10783  else
10784  {
10786  }
10787  }
10788 
10789  if( opt_plot == fSameOnePlot && GetMemoFlag(HistoCode, opt_plot) == "Free" )
10790  {
10793  fStopEvolRun, fStopEvolDate, opt_plot, HistoType);
10794  }
10795 
10796 }
10797 // end of SetAllPavesViewHisto
10798 
10799 TString TEcnaHistos::SetCanvasName(const TString& HistoCode,
10800  const Int_t& opt_scale_x, const Int_t& opt_scale_y,
10801  const TString& opt_plot, const Int_t& arg_AlreadyRead,
10802  const Int_t& StexStin_A, const Int_t& i0StinEcha, const Int_t& i0Sample)
10803 {
10804  //......... Set Canvas name *===> FOR 1D HISTO ONLY
10805  // (for 2D histos, see inside ViewMatrix, ViewStex,...)
10806 
10807  TString canvas_name;
10808  Int_t MaxCar = fgMaxCar;
10809  canvas_name.Resize(MaxCar);
10810  canvas_name = "?";
10811 
10812  char* f_in = new char[fgMaxCar]; fCnew++;
10813 
10814  //......................... name_ opt_plot (Set Canvas name)
10815  TString name_opt_plot;
10816  MaxCar = fgMaxCar;
10817  name_opt_plot.Resize(MaxCar);
10818  name_opt_plot = "?";
10819 
10820  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0){name_opt_plot = "P0";} // Only one plot
10821  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead == 1){name_opt_plot = "P1";} // SAME in Stin plot
10822  //if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1){name_opt_plot = "Pn";} // SAME in Stin plot
10823 
10824  if( opt_plot == fOnlyOnePlot ){sprintf(f_in,"P%d", arg_AlreadyRead); name_opt_plot = f_in;}
10825 
10826  if(opt_plot == fSeveralPlot)
10827  {
10828  name_opt_plot = "SAME_N";
10829  //...................................... name_same (opt_plot = fSeveralPlot)
10830  Int_t name_same = -1;
10831 
10832  if(HistoCode == "D_NOE_ChNb"){name_same = fCanvSameD_NOE_ChNb;}
10833  if(HistoCode == "D_NOE_ChDs"){name_same = fCanvSameD_NOE_ChDs;}
10834  if(HistoCode == "D_Ped_ChNb"){name_same = fCanvSameD_Ped_ChNb;}
10835  if(HistoCode == "D_Ped_ChDs"){name_same = fCanvSameD_Ped_ChDs;}
10836  if(HistoCode == "D_TNo_ChNb"){name_same = fCanvSameD_TNo_ChNb;}
10837  if(HistoCode == "D_TNo_ChDs"){name_same = fCanvSameD_TNo_ChDs;}
10838  if(HistoCode == "D_MCs_ChNb"){name_same = fCanvSameD_MCs_ChNb;}
10839  if(HistoCode == "D_MCs_ChDs"){name_same = fCanvSameD_MCs_ChDs;}
10840  if(HistoCode == "D_LFN_ChNb"){name_same = fCanvSameD_LFN_ChNb;}
10841  if(HistoCode == "D_LFN_ChDs"){name_same = fCanvSameD_LFN_ChDs;}
10842  if(HistoCode == "D_HFN_ChNb"){name_same = fCanvSameD_HFN_ChNb;}
10843  if(HistoCode == "D_HFN_ChDs"){name_same = fCanvSameD_HFN_ChDs;}
10844  if(HistoCode == "D_SCs_ChNb"){name_same = fCanvSameD_SCs_ChNb;}
10845  if(HistoCode == "D_SCs_ChDs"){name_same = fCanvSameD_SCs_ChDs;}
10846  if(HistoCode == "D_MSp_SpNb"){name_same = fCanvSameD_MSp_SpNb;}
10847  if(HistoCode == "D_MSp_SpDs"){name_same = fCanvSameD_MSp_SpDs;}
10848  if(HistoCode == "D_SSp_SpNb"){name_same = fCanvSameD_SSp_SpNb;}
10849  if(HistoCode == "D_SSp_SpDs"){name_same = fCanvSameD_SSp_SpDs;}
10850  if(HistoCode == "D_Adc_EvDs"){name_same = fCanvSameD_Adc_EvDs;}
10851  if(HistoCode == "D_Adc_EvNb"){name_same = fCanvSameD_Adc_EvNb;}
10852  if(HistoCode == "H_Ped_Date"){name_same = fCanvSameH_Ped_Date;}
10853  if(HistoCode == "H_TNo_Date"){name_same = fCanvSameH_TNo_Date;}
10854  if(HistoCode == "H_MCs_Date"){name_same = fCanvSameH_MCs_Date;}
10855  if(HistoCode == "H_LFN_Date"){name_same = fCanvSameH_LFN_Date;}
10856  if(HistoCode == "H_HFN_Date"){name_same = fCanvSameH_HFN_Date;}
10857  if(HistoCode == "H_SCs_Date"){name_same = fCanvSameH_SCs_Date;}
10858  if(HistoCode == "H_Ped_RuDs"){name_same = fCanvSameH_Ped_RuDs;}
10859  if(HistoCode == "H_TNo_RuDs"){name_same = fCanvSameH_TNo_RuDs;}
10860  if(HistoCode == "H_MCs_RuDs"){name_same = fCanvSameH_MCs_RuDs;}
10861  if(HistoCode == "H_LFN_RuDs"){name_same = fCanvSameH_LFN_RuDs;}
10862  if(HistoCode == "H_HFN_RuDs"){name_same = fCanvSameH_HFN_RuDs;}
10863  if(HistoCode == "H_SCs_RuDs"){name_same = fCanvSameH_SCs_RuDs;}
10864 
10865  sprintf(f_in,"%d", name_same);
10866  TString s_name_same = f_in;
10867  const Text_t *t_name_same = (const Text_t *)s_name_same.Data();
10868  name_opt_plot.Append(t_name_same);
10869  }
10870  if(opt_plot == fSameOnePlot)
10871  {
10872  name_opt_plot = "SAME_Plus_N";
10873  //...................................... name_same (opt_plot = fSeveralPlot)
10874  Int_t name_same = fCanvSameH1SamePlus;
10875  sprintf(f_in,"%d", name_same);
10876  TString s_name_same = f_in;
10877  const Text_t *t_name_same = (const Text_t *)s_name_same.Data();
10878  name_opt_plot.Append(t_name_same);
10879  }
10880 
10881  //......................... name_visu (Set Canvas name)
10882  TString name_visu;
10883  MaxCar = fgMaxCar;
10884  name_visu.Resize(MaxCar);
10885  name_visu = "";
10886 
10887  TString name_line;
10888  MaxCar = fgMaxCar;
10889  name_line.Resize(MaxCar);
10890  name_line = "Line_";
10891  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
10892  if( HistoType == "Global" && (opt_plot == fSeveralPlot || opt_plot == fSameOnePlot) ){name_line = "Polm_";}
10893 
10894  // if(opt_visu == fOptVisLine){name_line = "Line_";}
10895  // if(opt_visu == fOptVisPolm){name_line = "Poly_";}
10896 
10897  const Text_t *t_line = (const Text_t *)name_line.Data();
10898  name_visu.Append(t_line);
10899 
10900  TString name_scale_x;
10901  MaxCar = fgMaxCar;
10902  name_scale_x.Resize(MaxCar);
10903  name_scale_x = "?";
10904  if(opt_scale_x == fOptScaleLinx){name_scale_x = "LinX_";}
10905  if(opt_scale_x == fOptScaleLogx){name_scale_x = "LogX_";}
10906  const Text_t *t_scale_x = (const Text_t *)name_scale_x.Data();
10907  name_visu.Append(t_scale_x);
10908 
10909  TString name_scale_y;
10910  MaxCar = fgMaxCar;
10911  name_scale_y.Resize(MaxCar);
10912  name_scale_y = "?";
10913  if(opt_scale_y == fOptScaleLiny){name_scale_y = "LinY";}
10914  if(opt_scale_y == fOptScaleLogy){name_scale_y = "LogY";}
10915  const Text_t *t_scale_y = (const Text_t *)name_scale_y.Data();
10916  name_visu.Append(t_scale_y);
10917 
10918  //...................................... name quantity (Set Canvas name)
10919  TString name_quantity;
10920  MaxCar = fgMaxCar;
10921  name_quantity.Resize(MaxCar);
10922  name_quantity = "?";
10923 
10924  if(HistoCode == "D_NOE_ChNb"){name_quantity = "Nb_of_evts_as_func_of_Xtal";}
10925  if(HistoCode == "D_NOE_ChDs"){name_quantity = "Nb_of_evts_Xtal_distrib";}
10926  if(HistoCode == "D_Ped_ChNb"){name_quantity = "Pedestals_as_func_of_Xtal";}
10927  if(HistoCode == "D_Ped_ChDs"){name_quantity = "Pedestals_Xtal_distrib";}
10928  if(HistoCode == "D_TNo_ChNb"){name_quantity = "Total_Noise_as_func_of_Xtal";}
10929  if(HistoCode == "D_TNo_ChDs"){name_quantity = "Total_Noise_Xtal_distrib";}
10930  if(HistoCode == "D_MCs_ChNb"){name_quantity = "Mean_Corss_as_func_of_Xtal";}
10931  if(HistoCode == "D_MCs_ChDs"){name_quantity = "Mean_Corss_Xtal_distrib";}
10932  if(HistoCode == "D_LFN_ChNb"){name_quantity = "Low_Fq_Noise_as_func_of_Xtal";}
10933  if(HistoCode == "D_LFN_ChDs"){name_quantity = "Low_Fq_Noise_Xtal_distrib";}
10934  if(HistoCode == "D_HFN_ChNb"){name_quantity = "High_Fq_Noise_as_func_of_Xtal";}
10935  if(HistoCode == "D_HFN_ChDs"){name_quantity = "High_Fq_Noise_Xtal_distrib";}
10936  if(HistoCode == "D_SCs_ChNb"){name_quantity = "Sigma_Corss_as_func_of_Xtal";}
10937  if(HistoCode == "D_SCs_ChDs"){name_quantity = "Sigma_Corss_Xtal_distrib";}
10938  if(HistoCode == "D_MSp_SpNb"){name_quantity = "ExpValue_of_samples";}
10939  if(HistoCode == "D_MSp_SpDs"){name_quantity = "ExpValue_of_samples_distrib";}
10940  if(HistoCode == "D_SSp_SpNb"){name_quantity = "Sigma_of_samples";}
10941  if(HistoCode == "D_SSp_SpDs"){name_quantity = "Sigma_of_samples_distrib";}
10942  if(HistoCode == "D_Adc_EvDs"){name_quantity = "hevt";}
10943  if(HistoCode == "D_Adc_EvNb"){name_quantity = "ADC_as_func_of_Event";}
10944  if(HistoCode == "H_Ped_Date"){name_quantity = "Pedestal_history";}
10945  if(HistoCode == "H_TNo_Date"){name_quantity = "Total_Noise_history";}
10946  if(HistoCode == "H_MCs_Date"){name_quantity = "Mean_Corss_history";}
10947  if(HistoCode == "H_LFN_Date"){name_quantity = "Low_Fq_Noise_history";}
10948  if(HistoCode == "H_HFN_Date"){name_quantity = "High_Fq_Noise_history";}
10949  if(HistoCode == "H_SCs_Date"){name_quantity = "Sigma_Corss_history";}
10950  if(HistoCode == "H_Ped_RuDs"){name_quantity = "Pedestal_run_distribution";}
10951  if(HistoCode == "H_TNo_RuDs"){name_quantity = "Total_Noise_run_distribution";}
10952  if(HistoCode == "H_MCs_RuDs"){name_quantity = "Mean_Corss_run_distribution";}
10953  if(HistoCode == "H_LFN_RuDs"){name_quantity = "Low_Fq_Noise_run_distribution";}
10954  if(HistoCode == "H_HFN_RuDs"){name_quantity = "High_Fq_Noise_run_distribution";}
10955  if(HistoCode == "H_SCs_RuDs"){name_quantity = "Sigma_Corss_run_distribution";}
10956 
10957  Int_t num_crys = -1;
10958  if(HistoCode == "D_MSp_SpNb"){num_crys = i0StinEcha;}
10959  if(HistoCode == "D_MSp_SpDs"){num_crys = i0StinEcha;}
10960  if(HistoCode == "D_SSp_SpNb"){num_crys = i0StinEcha;}
10961  if(HistoCode == "D_SSp_SpDs"){num_crys = i0StinEcha;}
10962  if(HistoCode == "D_Adc_EvDs"){num_crys = i0StinEcha;}
10963  if(HistoCode == "D_Adc_EvNb"){num_crys = i0StinEcha;}
10964  if(HistoCode == "H_Ped_Date"){num_crys = i0StinEcha;}
10965  if(HistoCode == "H_TNo_Date"){num_crys = i0StinEcha;}
10966  if(HistoCode == "H_MCs_Date"){num_crys = i0StinEcha;}
10967  if(HistoCode == "H_LFN_Date"){num_crys = i0StinEcha;}
10968  if(HistoCode == "H_HFN_Date"){num_crys = i0StinEcha;}
10969  if(HistoCode == "H_SCs_Date"){num_crys = i0StinEcha;}
10970  if(HistoCode == "H_Ped_RuDs"){num_crys = i0StinEcha;}
10971  if(HistoCode == "H_TNo_RuDs"){num_crys = i0StinEcha;}
10972  if(HistoCode == "H_MCs_RuDs"){num_crys = i0StinEcha;}
10973  if(HistoCode == "H_LFN_RuDs"){num_crys = i0StinEcha;}
10974  if(HistoCode == "H_HFN_RuDs"){num_crys = i0StinEcha;}
10975  if(HistoCode == "H_SCs_RuDs"){num_crys = i0StinEcha;}
10976 
10977  Int_t num_samp = -1;
10978  if(HistoCode == "D_Adc_EvDs"){num_samp = i0Sample;}
10979  if(HistoCode == "D_Adc_EvNb"){num_samp = i0Sample;}
10980 
10981  //........................................................... (Set Canvas name)
10982 
10983  if (HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" ||
10984  HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" ||
10985  HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs" ||
10986  HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" ||
10987  HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" ||
10988  HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" ||
10989  HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" )
10990  {
10991  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s_%s",
10992  name_quantity.Data(), fFapAnaType.Data(),
10994  fFapStexName.Data(), fFapStexNumber,
10995  name_opt_plot.Data(), name_visu.Data());
10996  }
10997 
10998  if (HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
10999  HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
11000  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date" ||
11001  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ||
11002  HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
11003  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs")
11004  {
11005  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s%d_Xtal%d_%s_%s",
11006  name_quantity.Data(), fFapAnaType.Data(),
11008  fFapStexName.Data(), fFapStexNumber, fFapStinName.Data(), StexStin_A, num_crys,
11009  name_opt_plot.Data(), name_visu.Data());
11010  }
11011 
11012  if (HistoCode == "D_Adc_EvNb" || HistoCode == "D_Adc_EvDs")
11013  {
11014  sprintf(f_in, "%s_%s_S1_%d_R%d_%d_%d_%d_%s%d_%s%d_Xtal%d_Samp%d_%s_%s",
11015  name_quantity.Data(), fFapAnaType.Data(),
11017  fFapStexName.Data(), fFapStexNumber, fFapStinName.Data(), StexStin_A, num_crys, num_samp,
11018  name_opt_plot.Data(), name_visu.Data());
11019  }
11020 
11021  canvas_name = f_in;
11022  delete [] f_in; f_in = 0; fCdelete++;
11023  return canvas_name.Data();
11024 
11025 } // end of CanvasName()
11026 
11027 //-----------------------------------------------------------------------------
11028 //
11029 // M I S C E L L A N E O U S P A R A M E T E R S
11030 //
11031 // C O N C E R N I N G T H E D I S P L A Y
11032 //
11033 //-----------------------------------------------------------------------------
11034 
11035 //===========================================================================
11036 //
11037 // GetHistoSize, GetHistoValues, SetHistoXAxisTitle, SetHistoYAxisTitle,
11038 // GetHistoXinf, GetHistoXsup, GetHistoNumberOfBins, FillHisto
11039 //
11040 //===========================================================================
11041 Int_t TEcnaHistos::GetHistoSize(const TString& chqcode, const TString& opt_plot_read)
11042 {
11043 // Histo size as a function of the quantity code
11044 
11045 // VERY IMPORTANT: in some cases the number of bins must be strictly related to the parameters values
11046 // (number of crystals, number of samples, etc...). See below comments "===> ONE BIN BY..."
11047 
11048  Int_t HisSize = fNbBinsProj; // default value
11049 
11050  //............ histo with sample number as x coordinate => HisSize depends on option "plot" or "read"
11051  // because of nb of samples in file: size for plot = 10 even if nb of samples in file < 10
11052  if( chqcode == "D_MSp_SpNb" || chqcode == "D_SSp_SpNb" ||
11053  chqcode == "D_MSp_SpDs" || chqcode == "D_SSp_SpDs" )
11054  {
11055  if( opt_plot_read == "read" ){HisSize = fFapNbOfSamples;}
11056  if( opt_plot_read == "plot" ){HisSize = fEcal->MaxSampADC();}
11057  } // ===> ONE BIN BY SAMPLE
11058 
11059  //............ histo with event number as x coordinate. (==> "D_Adc_EvDs" option: obsolete, to be confirmed)
11060  if(chqcode == "D_Adc_EvNb" || chqcode == "D_Adc_EvDs"){HisSize = fFapReqNbOfEvts;} // ===> ONE BIN BY EVENT
11061 
11062  //............
11063  if(chqcode == "D_NOE_ChNb" ||
11064  chqcode == "D_Ped_ChNb" || chqcode == "D_TNo_ChNb" || chqcode == "D_MCs_ChNb" ||
11065  chqcode == "D_LFN_ChNb" || chqcode == "D_HFN_ChNb" || chqcode == "D_SCs_ChNb" ||
11066  chqcode == "D_NOE_ChDs" ||
11067  chqcode == "D_Ped_ChDs" || chqcode == "D_TNo_ChDs" || chqcode == "D_MCs_ChDs" ||
11068  chqcode == "D_LFN_ChDs" || chqcode == "D_HFN_ChDs" || chqcode == "D_SCs_ChDs" )
11069  {
11070  if( fFlagSubDet == "EB" )
11071  {
11072  if( fFapStexNumber > 0 ){HisSize = fEcal->MaxCrysEcnaInStex();} // ===> ONE BIN BY Xtal
11073  if( fFapStexNumber == 0 ){HisSize = fEcal->MaxSMInEB()*fEcal->MaxTowInSM();} // ===> ONE BIN BY Tower
11074  }
11075  if( fFlagSubDet == "EE" )
11076  {
11077  if( fFapStexNumber > 0 )
11078  {
11079  if( opt_plot_read == "read" ){HisSize = fEcal->MaxCrysEcnaInDee();}
11080  if( opt_plot_read == "plot" ){HisSize = fEcal->MaxCrysForConsInDee();}
11081  } // ===> ONE BIN BY Xtal
11082  if( fFapStexNumber == 0 )
11083  {HisSize = fEcal->MaxDeeInEE()*fEcal->MaxSCForConsInDee();} // ===> ONE BIN BY SC
11084  }
11085  }
11086 
11087  if( chqcode == "H_Ped_RuDs" || chqcode == "H_TNo_RuDs" || chqcode == "H_MCs_RuDs" ||
11088  chqcode == "H_LFN_RuDs" || chqcode == "H_HFN_RuDs" || chqcode == "H_SCs_RuDs" )
11089  {
11090  HisSize = fNbBinsProj;
11091  }
11092 
11093  return HisSize;
11094 }
11095 
11096 TVectorD TEcnaHistos::GetHistoValues(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead,
11097  TEcnaRead* aMyRootFile, const TString& HistoCode,
11098  const Int_t& HisSizePlot, const Int_t& HisSizeRead,
11099  const Int_t& StexStin_A, const Int_t& i0StinEcha,
11100  const Int_t& i0Sample, Int_t& i_data_exist)
11101 {
11102  // Histo values in a TVectorD. i_data_exist entry value = 0. Incremented in this method.
11103 
11104  TVectorD plot_histo(HisSizePlot); for(Int_t i=0; i<HisSizePlot; i++){plot_histo(i)=(Double_t)0.;}
11105 
11106  fStatusDataExist = kFALSE;
11107 
11108  if( arg_AlreadyRead >= 1 )
11109  {
11110  //cout << "*TEcnaHistos::GetHistoValues(...)> arg_AlreadyRead = " << arg_AlreadyRead << endl;
11111  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=arg_read_histo(i);}
11112  fStatusDataExist = kTRUE; i_data_exist++;
11113  }
11114 
11115  if( arg_AlreadyRead == 0 )
11116  {
11117  //cout << "*TEcnaHistos::GetHistoValues(...)> arg_AlreadyRead = " << arg_AlreadyRead << endl;
11118  TVectorD read_histo(HisSizeRead); for(Int_t i=0; i<HisSizeRead; i++){read_histo(i)=(Double_t)0.;}
11119 
11120  if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_MSp_SpDs" ||
11121  HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11122  {
11123  //====> For plots as a function of Sample# (read10->plot10, read3->plot10)
11124  if( HisSizeRead <= HisSizePlot )
11125  {
11126  if (HistoCode == "D_MSp_SpNb" || HistoCode == "D_MSp_SpDs" )
11127  {
11128  read_histo = aMyRootFile->ReadSampleMeans(StexStin_A, i0StinEcha, HisSizeRead);
11129  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11130  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11131  }
11132 
11133  if (HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11134  {
11135  read_histo = aMyRootFile->ReadSampleSigmas(StexStin_A, i0StinEcha, HisSizeRead);
11136  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11137  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11138  }
11139  }
11140  else
11141  {
11142  cout << "!TEcnaHistos::GetHistoValues(...)> *** ERROR *** > HisSizeRead greater than HisSizePlot"
11143  << " for plot as a function of sample#. HisSizeRead = " << HisSizeRead
11144  << ", HisSizePlot = " << HisSizePlot << fTTBELL << endl;
11145  }
11146  } // end of if( HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" " ||
11147  // HistoCode == "D_SSp_SpNb" || HistoCode == "D_SSp_SpDs" )
11148 
11149  if( !(HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" ||
11150  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ) ) // = else of previous if
11151  {
11152  //====> For other plots
11153  if( HisSizeRead == HisSizePlot )
11154  {
11155  //========> for EE, HisSizeRead > HisSizePlot but readEcna#->plotForCons# will be build in the calling method
11156  // HisSizeRead = fEcal->MaxCrysEcnaInStex() (GetHistoValues)
11157 
11158  if( HistoCode == "D_Adc_EvNb" || HistoCode == "D_Adc_EvDs" )
11159  {
11160  read_histo = aMyRootFile->ReadSampleAdcValues(StexStin_A, i0StinEcha, i0Sample, HisSizeRead);
11161  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11162  }
11163 
11164  if( HistoCode == "D_NOE_ChNb" || HistoCode == "D_NOE_ChDs" )
11165  {
11166  read_histo = aMyRootFile->ReadNumberOfEvents(HisSizeRead);
11167  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11168  }
11169 
11170  if( HistoCode == "D_Ped_ChNb" || HistoCode == "D_Ped_ChDs" )
11171  {
11172  read_histo = aMyRootFile->ReadPedestals(HisSizeRead);
11173  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11174  }
11175 
11176  //...................................................... (GetHistoValues)
11177  if( HistoCode == "D_TNo_ChNb" || HistoCode == "D_TNo_ChDs")
11178  {
11179  read_histo = aMyRootFile->ReadTotalNoise(HisSizeRead);
11180  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11181  }
11182 
11183  if( HistoCode == "D_LFN_ChNb" || HistoCode == "D_LFN_ChDs" )
11184  {
11185  read_histo = aMyRootFile->ReadLowFrequencyNoise(HisSizeRead);
11186  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11187 
11188  }
11189 
11190  if( HistoCode == "D_HFN_ChNb" || HistoCode == "D_HFN_ChDs" )
11191  {
11192  read_histo = aMyRootFile->ReadHighFrequencyNoise(HisSizeRead);
11193  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11194 
11195  }
11196 
11197  if( HistoCode == "D_MCs_ChNb" || HistoCode == "D_MCs_ChDs" )
11198  {
11199  read_histo = aMyRootFile->ReadMeanCorrelationsBetweenSamples(HisSizeRead);
11200  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11201  }
11202 
11203  if( HistoCode == "D_SCs_ChNb" || HistoCode == "D_SCs_ChDs" )
11204  {
11205  read_histo = aMyRootFile->ReadSigmaOfCorrelationsBetweenSamples(HisSizeRead);
11206  if( aMyRootFile->DataExist() == kTRUE ){fStatusDataExist = kTRUE; i_data_exist++;}
11207  }
11208 
11209  for(Int_t i=0; i<HisSizeRead; i++){plot_histo(i)=read_histo(i);}
11210 
11211  }
11212  else
11213  {
11214  cout << "!TEcnaHistos::GetHistoValues(...)> *** ERROR *** > HisSizeRead not equal to HisSizePlot."
11215  << " HisSizeRead = " << HisSizeRead
11216  << ", HisSizePlot = " << HisSizePlot << fTTBELL << endl;
11217  }
11218  } // end of if( !(HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb") )
11219  } // end of if( arg_AlreadyRead == 0 )
11220 
11221  if( i_data_exist == 0 )
11222  {
11223  cout << "!TEcnaHistos::GetHistoValues(...)> Histo not found." << fTTBELL << endl;
11224  }
11225 
11226  return plot_histo;
11227 }
11228 //------- (end of GetHistoValues) -------------
11229 
11230 TString TEcnaHistos::SetHistoXAxisTitle(const TString& HistoCode)
11231 {
11232  // Set histo X axis title
11233 
11234  TString axis_x_var_name;
11235 
11236  if(HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
11237  HistoCode == "D_TNo_ChNb" || HistoCode == "D_MCs_ChNb" ||
11238  HistoCode == "D_LFN_ChNb" || HistoCode == "D_HFN_ChNb" ||
11239  HistoCode == "D_SCs_ChNb" )
11240  {
11241  if( fFapStexNumber > 0 )
11242  {
11243  if( fFlagSubDet == "EB" ){axis_x_var_name = "Xtal (electronic channel number)";}
11244  if( fFlagSubDet == "EE" ){axis_x_var_name = "Xtal";}
11245  }
11246  if( fFapStexNumber == 0 )
11247  {
11248  if( fFlagSubDet == "EB" ){axis_x_var_name = "Tower number";}
11249  if( fFlagSubDet == "EE" ){axis_x_var_name = "SC number";}
11250  }
11251  }
11252 
11253  if(HistoCode == "D_NOE_ChDs"){axis_x_var_name = "Number of events";}
11254  if(HistoCode == "D_Ped_ChDs"){axis_x_var_name = "Pedestal";}
11255  if(HistoCode == "D_TNo_ChDs"){axis_x_var_name = "Total noise";}
11256  if(HistoCode == "D_MCs_ChDs"){axis_x_var_name = "Mean cor(s,s')";}
11257  if(HistoCode == "D_LFN_ChDs"){axis_x_var_name = "Low frequency noise";}
11258  if(HistoCode == "D_HFN_ChDs"){axis_x_var_name = "High frequency noise";}
11259  if(HistoCode == "D_SCs_ChDs"){axis_x_var_name = "Sigmas cor(s,s')";}
11260  if(HistoCode == "D_MSp_SpNb"){axis_x_var_name = "Sample";}
11261  if(HistoCode == "D_MSp_SpDs"){axis_x_var_name = "Pedestal";}
11262  if(HistoCode == "D_SSp_SpNb"){axis_x_var_name = "Sample";}
11263  if(HistoCode == "D_SSp_SpDs"){axis_x_var_name = "Total noise";}
11264  if(HistoCode == "D_Adc_EvDs"){axis_x_var_name = "ADC";}
11265  if(HistoCode == "D_Adc_EvNb"){axis_x_var_name = "Event number";}
11266  if(HistoCode == "H_Ped_Date" || HistoCode == "H_TNo_Date" || HistoCode == "H_MCs_Date" ||
11267  HistoCode == "H_LFN_Date" || HistoCode == "H_HFN_Date" || HistoCode == "H_SCs_Date")
11268  {axis_x_var_name = "Time";}
11269  if(HistoCode == "H_Ped_RuDs"){axis_x_var_name = "Pedestal";}
11270  if(HistoCode == "H_TNo_RuDs"){axis_x_var_name = "Total noise";}
11271  if(HistoCode == "H_MCs_RuDs"){axis_x_var_name = "Mean cor(s,s')";}
11272  if(HistoCode == "H_LFN_RuDs"){axis_x_var_name = "Low frequency noise";}
11273  if(HistoCode == "H_HFN_RuDs"){axis_x_var_name = "High frequency noise";}
11274  if(HistoCode == "H_SCs_RuDs"){axis_x_var_name = "Sigmas cor(s,s')";}
11275 
11276  return axis_x_var_name;
11277 }
11278 
11279 TString TEcnaHistos::SetHistoYAxisTitle(const TString& HistoCode)
11280 {
11281 // Set histo Y axis title
11282 
11283  TString axis_y_var_name;
11284 
11285  if(HistoCode == "D_NOE_ChNb"){axis_y_var_name = "Number of events";}
11286  if(HistoCode == "D_Ped_ChNb"){axis_y_var_name = "Pedestal";}
11287  if(HistoCode == "D_TNo_ChNb"){axis_y_var_name = "Total noise";}
11288  if(HistoCode == "D_MCs_ChNb"){axis_y_var_name = "Mean cor(s,s')";}
11289  if(HistoCode == "D_LFN_ChNb"){axis_y_var_name = "Low frequency noise";}
11290  if(HistoCode == "D_HFN_ChNb"){axis_y_var_name = "High frequency noise";}
11291  if(HistoCode == "D_SCs_ChNb"){axis_y_var_name = "Sigma of cor(s,s')";}
11292 
11293  if(HistoCode == "D_NOE_ChDs" ||
11294  HistoCode == "D_Ped_ChDs" || HistoCode == "D_TNo_ChDs" || HistoCode == "D_MCs_ChDs" ||
11295  HistoCode == "D_LFN_ChDs" || HistoCode == "D_HFN_ChDs" || HistoCode == "D_SCs_ChDs" )
11296  {
11297  if( fFapStexNumber > 0 ){axis_y_var_name = "number of crystals";}
11298  if( fFapStexNumber == 0 )
11299  {
11300  if( fFlagSubDet == "EB" ){axis_y_var_name = "number of towers";}
11301  if( fFlagSubDet == "EE" ){axis_y_var_name = "number of SC's";}
11302  }
11303  }
11304 
11305  if(HistoCode == "D_MSp_SpNb"){axis_y_var_name = "Sample mean";}
11306  if(HistoCode == "D_MSp_SpDs"){axis_y_var_name = "Number of samples";}
11307  if(HistoCode == "D_SSp_SpNb"){axis_y_var_name = "Sample sigma";}
11308  if(HistoCode == "D_SSp_SpDs"){axis_y_var_name = "Number of samples";}
11309  if(HistoCode == "D_Adc_EvNb"){axis_y_var_name = "Sample ADC value";}
11310  if(HistoCode == "D_Adc_EvDs"){axis_y_var_name = "Number of events";}
11311  if(HistoCode == "H_Ped_Date"){axis_y_var_name = "Pedestal";}
11312  if(HistoCode == "H_TNo_Date"){axis_y_var_name = "Total noise";}
11313  if(HistoCode == "H_MCs_Date"){axis_y_var_name = "Mean cor(s,s')";}
11314  if(HistoCode == "H_LFN_Date"){axis_y_var_name = "Low frequency noise";}
11315  if(HistoCode == "H_HFN_Date"){axis_y_var_name = "High frequency noise";}
11316  if(HistoCode == "H_SCs_Date"){axis_y_var_name = "Sigma cor(s,s')";}
11317 
11318  if(HistoCode == "H_Ped_RuDs" || HistoCode == "H_TNo_RuDs" || HistoCode == "H_MCs_RuDs" ||
11319  HistoCode == "H_LFN_RuDs" || HistoCode == "H_HFN_RuDs" || HistoCode == "H_SCs_RuDs" )
11320  {axis_y_var_name = "number of runs";}
11321 
11322  return axis_y_var_name;
11323 }
11324 //-------------------------------------------------------------------------------
11325 Axis_t TEcnaHistos::GetHistoXinf(const TString& HistoCode, const Int_t& HisSize, const TString& opt_plot)
11326 {
11327 // Set histo Xinf
11328 
11329  Axis_t xinf_his = (Axis_t)0;
11330 
11331  if(HistoCode == "D_NOE_ChNb"){xinf_his = (Axis_t)0.;}
11332  if(HistoCode == "D_Ped_ChNb"){xinf_his = (Axis_t)0.;}
11333  if(HistoCode == "D_TNo_ChNb"){xinf_his = (Axis_t)0.;}
11334  if(HistoCode == "D_MCs_ChNb"){xinf_his = (Axis_t)0.;}
11335  if(HistoCode == "D_LFN_ChNb"){xinf_his = (Axis_t)0.;}
11336  if(HistoCode == "D_HFN_ChNb"){xinf_his = (Axis_t)0.;}
11337  if(HistoCode == "D_SCs_ChNb"){xinf_his = (Axis_t)0.;}
11338  if(HistoCode == "D_MSp_SpNb"){xinf_his = (Axis_t)0.;}
11339  if(HistoCode == "D_SSp_SpNb"){xinf_his = (Axis_t)0.;}
11340  if(HistoCode == "D_Adc_EvNb"){xinf_his = (Axis_t)0.;}
11341 
11342  if(HistoCode == "D_NOE_ChDs"){xinf_his = (Axis_t)fD_NOE_ChNbYmin;} // D_XXX_YYDs = projection of D_XXX_YYNb
11343  if(HistoCode == "D_Ped_ChDs"){xinf_his = (Axis_t)fD_Ped_ChNbYmin;}
11344  if(HistoCode == "D_TNo_ChDs"){xinf_his = (Axis_t)fD_TNo_ChNbYmin;}
11345  if(HistoCode == "D_MCs_ChDs"){xinf_his = (Axis_t)fD_MCs_ChNbYmin;}
11346  if(HistoCode == "D_LFN_ChDs"){xinf_his = (Axis_t)fD_LFN_ChNbYmin;}
11347  if(HistoCode == "D_HFN_ChDs"){xinf_his = (Axis_t)fD_HFN_ChNbYmin;}
11348  if(HistoCode == "D_SCs_ChDs"){xinf_his = (Axis_t)fD_SCs_ChNbYmin;}
11349  if(HistoCode == "D_MSp_SpDs"){xinf_his = (Axis_t)fD_MSp_SpNbYmin;}
11350  if(HistoCode == "D_SSp_SpDs"){xinf_his = (Axis_t)fD_SSp_SpNbYmin;}
11351  if(HistoCode == "D_Adc_EvDs"){xinf_his = (Axis_t)fD_Adc_EvNbYmin;}
11352 
11353  if(HistoCode == "H_Ped_Date"){xinf_his = (Axis_t)0.;}
11354  if(HistoCode == "H_TNo_Date"){xinf_his = (Axis_t)0.;}
11355  if(HistoCode == "H_MCs_Date"){xinf_his = (Axis_t)0.;}
11356  if(HistoCode == "H_LFN_Date"){xinf_his = (Axis_t)0.;}
11357  if(HistoCode == "H_HFN_Date"){xinf_his = (Axis_t)0.;}
11358  if(HistoCode == "H_SCs_Date"){xinf_his = (Axis_t)0.;}
11359 
11360  if(HistoCode == "H_Ped_RuDs"){xinf_his = (Axis_t)fH_Ped_RuDsYmin;}
11361  if(HistoCode == "H_TNo_RuDs"){xinf_his = (Axis_t)fH_TNo_RuDsYmin;}
11362  if(HistoCode == "H_MCs_RuDs"){xinf_his = (Axis_t)fH_MCs_RuDsYmin;}
11363  if(HistoCode == "H_LFN_RuDs"){xinf_his = (Axis_t)fH_LFN_RuDsYmin;}
11364  if(HistoCode == "H_HFN_RuDs"){xinf_his = (Axis_t)fH_HFN_RuDsYmin;}
11365  if(HistoCode == "H_SCs_RuDs"){xinf_his = (Axis_t)fH_SCs_RuDsYmin;}
11366 
11367  return xinf_his;
11368 }
11369 
11370 Axis_t TEcnaHistos::GetHistoXsup(const TString& HistoCode, const Int_t& HisSize, const TString& opt_plot)
11371 {
11372 // Set histo Xsup
11373 
11374  Axis_t xsup_his = (Axis_t)0;
11375 
11376  if(HistoCode == "D_NOE_ChNb"){xsup_his = (Axis_t)HisSize;}
11377  if(HistoCode == "D_Ped_ChNb"){xsup_his = (Axis_t)HisSize;}
11378  if(HistoCode == "D_TNo_ChNb"){xsup_his = (Axis_t)HisSize;}
11379  if(HistoCode == "D_MCs_ChNb"){xsup_his = (Axis_t)HisSize;}
11380  if(HistoCode == "D_LFN_ChNb"){xsup_his = (Axis_t)HisSize;}
11381  if(HistoCode == "D_HFN_ChNb"){xsup_his = (Axis_t)HisSize;}
11382  if(HistoCode == "D_SCs_ChNb"){xsup_his = (Axis_t)HisSize;}
11383  if(HistoCode == "D_MSp_SpNb"){xsup_his = (Axis_t)HisSize;}
11384  if(HistoCode == "D_SSp_SpNb"){xsup_his = (Axis_t)HisSize;}
11385  if(HistoCode == "D_Adc_EvNb"){xsup_his = (Axis_t)(fFapReqNbOfEvts);}
11386 
11387  if(HistoCode == "D_NOE_ChDs"){xsup_his = (Axis_t)fD_NOE_ChNbYmax;}
11388  if(HistoCode == "D_Ped_ChDs"){xsup_his = (Axis_t)fD_Ped_ChNbYmax;}
11389  if(HistoCode == "D_TNo_ChDs"){xsup_his = (Axis_t)fD_TNo_ChNbYmax;}
11390  if(HistoCode == "D_MCs_ChDs"){xsup_his = (Axis_t)fD_MCs_ChNbYmax;}
11391  if(HistoCode == "D_LFN_ChDs"){xsup_his = (Axis_t)fD_LFN_ChNbYmax;}
11392  if(HistoCode == "D_HFN_ChDs"){xsup_his = (Axis_t)fD_HFN_ChNbYmax;}
11393  if(HistoCode == "D_SCs_ChDs"){xsup_his = (Axis_t)fD_SCs_ChNbYmax;}
11394  if(HistoCode == "D_MSp_SpDs"){xsup_his = (Axis_t)fD_MSp_SpNbYmax;}
11395  if(HistoCode == "D_SSp_SpDs"){xsup_his = (Axis_t)fD_SSp_SpNbYmax;}
11396  if(HistoCode == "D_Adc_EvDs"){xsup_his = (Axis_t)fD_Adc_EvNbYmax;}
11397 
11398  if(HistoCode == "H_Ped_Date"){xsup_his = (Axis_t)0.;}
11399  if(HistoCode == "H_TNo_Date"){xsup_his = (Axis_t)0.;}
11400  if(HistoCode == "H_MCs_Date"){xsup_his = (Axis_t)0.;}
11401  if(HistoCode == "H_LFN_Date"){xsup_his = (Axis_t)0.;}
11402  if(HistoCode == "H_HFN_Date"){xsup_his = (Axis_t)0.;}
11403  if(HistoCode == "H_SCs_Date"){xsup_his = (Axis_t)0.;}
11404 
11405  if(HistoCode == "H_Ped_RuDs"){xsup_his = (Axis_t)fH_Ped_RuDsYmax;}
11406  if(HistoCode == "H_TNo_RuDs"){xsup_his = (Axis_t)fH_TNo_RuDsYmax;}
11407  if(HistoCode == "H_MCs_RuDs"){xsup_his = (Axis_t)fH_MCs_RuDsYmax;}
11408  if(HistoCode == "H_LFN_RuDs"){xsup_his = (Axis_t)fH_LFN_RuDsYmax;}
11409  if(HistoCode == "H_HFN_RuDs"){xsup_his = (Axis_t)fH_HFN_RuDsYmax;}
11410  if(HistoCode == "H_SCs_RuDs"){xsup_his = (Axis_t)fH_SCs_RuDsYmax;}
11411 
11412  return xsup_his;
11413 }
11414 //-----------------------------------------------------------------------------------
11415 Int_t TEcnaHistos::GetHistoNumberOfBins(const TString& HistoCode, const Int_t& HisSize)
11416 {
11417 // Set histo number of bins
11418 
11419  Int_t nb_binx = HisSize;
11420  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
11421  if ( HistoType == "Proj" || HistoType == "SampProj" ||
11422  HistoType == "EvolProj" || HistoType == "H1BasicProj" )
11423  {nb_binx = fNbBinsProj;}
11424 
11425  return nb_binx;
11426 }
11427 //-----------------------------------------------------------------------------------
11428 void TEcnaHistos::FillHisto(TH1D* h_his0, const TVectorD& read_histo, const TString& HistoCode,
11429  const Int_t& HisSize)
11430 {
11431 // Fill histo
11432 
11433  h_his0->Reset();
11434 
11435  for(Int_t i=0; i<HisSize; i++)
11436  {
11437  Double_t his_val = (Double_t)0;
11438  Double_t xi = (Double_t)0;
11439  //................................................... Basic + Global
11440  if (HistoCode == "D_NOE_ChNb" || HistoCode == "D_Ped_ChNb" ||
11441  HistoCode == "D_LFN_ChNb" || HistoCode == "D_TNo_ChNb" ||
11442  HistoCode == "D_HFN_ChNb" || HistoCode == "D_MCs_ChNb" ||
11443  HistoCode == "D_SCs_ChNb" || HistoCode == "D_MSp_SpNb" || HistoCode == "D_SSp_SpNb" )
11444  {
11445  xi = (Double_t)i;
11446  his_val = (Double_t)read_histo[i];
11447  h_his0->Fill(xi, his_val);
11448  }
11449 
11450  //................................................... D_Adc_EvNb option
11451  if (HistoCode == "D_Adc_EvNb" )
11452  {
11453  xi = (Double_t)i;
11454  his_val = (Double_t)read_histo[i];
11455  h_his0->Fill(xi, his_val);
11456  }
11457  //................................................... Proj
11458  if (HistoCode == "D_NOE_ChDs" ||
11459  HistoCode == "D_Ped_ChDs" || HistoCode == "D_LFN_ChDs" ||
11460  HistoCode == "D_TNo_ChDs" || HistoCode == "D_HFN_ChDs" ||
11461  HistoCode == "D_MCs_ChDs" || HistoCode == "D_SCs_ChDs" ||
11462  HistoCode == "D_MSp_SpDs" || HistoCode == "D_SSp_SpDs" ||
11463  HistoCode == "D_Adc_EvDs" )
11464  {
11465  his_val = (Double_t)read_histo[i];
11466  Double_t increment = (Double_t)1;
11467  h_his0->Fill(his_val, increment);
11468  }
11469 
11470  //................................................... EvolProj
11471  //
11472  // *=======> direct Fill in ViewHistime(...)
11473  //
11474  }
11475 }
11476 
11477 //===========================================================================
11478 //
11479 // SetXinfMemoFromValue(...), SetXsupMemoFromValue(...)
11480 // GetXsupValueFromMemo(...), GetXsupValueFromMemo(...)
11481 //
11482 //===========================================================================
11483 void TEcnaHistos::SetXinfMemoFromValue(const TString& HistoCode, const Double_t& value)
11484 {
11485  if( HistoCode == "D_NOE_ChNb"){fD_NOE_ChNbXinf = value;}
11486  if( HistoCode == "D_NOE_ChDs"){fD_NOE_ChDsXinf = value;}
11487  if( HistoCode == "D_Ped_ChNb"){fD_Ped_ChNbXinf = value;}
11488  if( HistoCode == "D_Ped_ChDs"){fD_Ped_ChDsXinf = value;}
11489  if( HistoCode == "D_TNo_ChNb"){fD_TNo_ChNbXinf = value;}
11490  if( HistoCode == "D_TNo_ChDs"){fD_TNo_ChDsXinf = value;}
11491  if( HistoCode == "D_MCs_ChNb"){fD_MCs_ChNbXinf = value;}
11492  if( HistoCode == "D_MCs_ChDs"){fD_MCs_ChDsXinf = value;}
11493  if( HistoCode == "D_LFN_ChNb"){fD_LFN_ChNbXinf = value;}
11494  if( HistoCode == "D_LFN_ChDs"){fD_LFN_ChDsXinf = value;}
11495  if( HistoCode == "D_HFN_ChNb"){fD_HFN_ChNbXinf = value;}
11496  if( HistoCode == "D_HFN_ChDs"){fD_HFN_ChDsXinf = value;}
11497  if( HistoCode == "D_SCs_ChNb"){fD_SCs_ChNbXinf = value;}
11498  if( HistoCode == "D_SCs_ChDs"){fD_SCs_ChDsXinf = value;}
11499  if( HistoCode == "D_MSp_SpNb"){fD_Ped_ChNbXinf = value;}
11500  if( HistoCode == "D_MSp_SpDs"){fD_Ped_ChDsXinf = value;}
11501  if( HistoCode == "D_SSp_SpNb"){fD_TNo_ChNbXinf = value;}
11502  if( HistoCode == "D_SSp_SpDs"){fD_TNo_ChDsXinf = value;}
11503  if( HistoCode == "D_Adc_EvNb"){fD_Ped_ChNbXinf = value;}
11504  if( HistoCode == "D_Adc_EvDs"){fD_Adc_EvDsXinf = value;}
11505  if( HistoCode == "H_Ped_Date"){fH_Ped_DateXinf = value;}
11506  if( HistoCode == "H_TNo_Date"){fH_TNo_DateXinf = value;}
11507  if( HistoCode == "H_MCs_Date"){fH_MCs_DateXinf = value;}
11508  if( HistoCode == "H_LFN_Date"){fH_LFN_DateXinf = value;}
11509  if( HistoCode == "H_HFN_Date"){fH_HFN_DateXinf = value;}
11510  if( HistoCode == "H_SCs_Date"){fH_SCs_DateXinf = value;}
11511  if( HistoCode == "H_Ped_RuDs"){fH_Ped_RuDsXinf = value;}
11512  if( HistoCode == "H_TNo_RuDs"){fH_TNo_RuDsXinf = value;}
11513  if( HistoCode == "H_MCs_RuDs"){fH_MCs_RuDsXinf = value;}
11514  if( HistoCode == "H_LFN_RuDs"){fH_LFN_RuDsXinf = value;}
11515  if( HistoCode == "H_HFN_RuDs"){fH_HFN_RuDsXinf = value;}
11516  if( HistoCode == "H_SCs_RuDs"){fH_SCs_RuDsXinf = value;}
11517 }// end of SetXinfMemoFromValue(...)
11518 
11521 
11522 void TEcnaHistos::SetXsupMemoFromValue(const TString& HistoCode, const Double_t& value)
11523 {
11524  if( HistoCode == "D_NOE_ChNb"){fD_NOE_ChNbXsup = value;}
11525  if( HistoCode == "D_NOE_ChDs"){fD_NOE_ChDsXsup = value;}
11526  if( HistoCode == "D_Ped_ChNb"){fD_Ped_ChNbXsup = value;}
11527  if( HistoCode == "D_Ped_ChDs"){fD_Ped_ChDsXsup = value;}
11528  if( HistoCode == "D_TNo_ChNb"){fD_TNo_ChNbXsup = value;}
11529  if( HistoCode == "D_TNo_ChDs"){fD_TNo_ChDsXsup = value;}
11530  if( HistoCode == "D_MCs_ChNb"){fD_MCs_ChNbXsup = value;}
11531  if( HistoCode == "D_MCs_ChDs"){fD_MCs_ChDsXsup = value;}
11532  if( HistoCode == "D_LFN_ChNb"){fD_LFN_ChNbXsup = value;}
11533  if( HistoCode == "D_LFN_ChDs"){fD_LFN_ChDsXsup = value;}
11534  if( HistoCode == "D_HFN_ChNb"){fD_HFN_ChNbXsup = value;}
11535  if( HistoCode == "D_HFN_ChDs"){fD_HFN_ChDsXsup = value;}
11536  if( HistoCode == "D_SCs_ChNb"){fD_SCs_ChNbXsup = value;}
11537  if( HistoCode == "D_SCs_ChDs"){fD_SCs_ChDsXsup = value;}
11538  if( HistoCode == "D_MSp_SpNb"){fD_Ped_ChNbXsup = value;}
11539  if( HistoCode == "D_MSp_SpDs"){fD_Ped_ChDsXsup = value;}
11540  if( HistoCode == "D_SSp_SpNb"){fD_TNo_ChNbXsup = value;}
11541  if( HistoCode == "D_SSp_SpDs"){fD_TNo_ChDsXsup = value;}
11542  if( HistoCode == "D_Adc_EvNb"){fD_Ped_ChNbXsup = value;}
11543  if( HistoCode == "D_Adc_EvDs"){fD_Adc_EvDsXsup = value;}
11544  if( HistoCode == "H_Ped_Date"){fH_Ped_DateXsup = value;}
11545  if( HistoCode == "H_TNo_Date"){fH_TNo_DateXsup = value;}
11546  if( HistoCode == "H_MCs_Date"){fH_MCs_DateXsup = value;}
11547  if( HistoCode == "H_LFN_Date"){fH_LFN_DateXsup = value;}
11548  if( HistoCode == "H_HFN_Date"){fH_HFN_DateXsup = value;}
11549  if( HistoCode == "H_SCs_Date"){fH_SCs_DateXsup = value;}
11550  if( HistoCode == "H_Ped_RuDs"){fH_Ped_RuDsXsup = value;}
11551  if( HistoCode == "H_TNo_RuDs"){fH_TNo_RuDsXsup = value;}
11552  if( HistoCode == "H_MCs_RuDs"){fH_MCs_RuDsXsup = value;}
11553  if( HistoCode == "H_LFN_RuDs"){fH_LFN_RuDsXsup = value;}
11554  if( HistoCode == "H_HFN_RuDs"){fH_HFN_RuDsXsup = value;}
11555  if( HistoCode == "H_SCs_RuDs"){fH_SCs_RuDsXsup = value;}
11556 }// end of SetXsupMemoFromValue(...)
11557 
11560 
11561 Double_t TEcnaHistos::GetXinfValueFromMemo(const TString& HistoCode)
11562 {
11563  Double_t val_inf = (Double_t)0.;
11564 
11565  if( HistoCode == "D_NOE_ChNb"){val_inf = fD_NOE_ChNbXinf;}
11566  if( HistoCode == "D_NOE_ChDs"){val_inf = fD_NOE_ChDsXinf;}
11567  if( HistoCode == "D_Ped_ChNb"){val_inf = fD_Ped_ChNbXinf;}
11568  if( HistoCode == "D_Ped_ChDs"){val_inf = fD_Ped_ChDsXinf;}
11569  if( HistoCode == "D_TNo_ChNb"){val_inf = fD_TNo_ChNbXinf;}
11570  if( HistoCode == "D_TNo_ChDs"){val_inf = fD_TNo_ChDsXinf;}
11571  if( HistoCode == "D_MCs_ChNb"){val_inf = fD_MCs_ChNbXinf;}
11572  if( HistoCode == "D_MCs_ChDs"){val_inf = fD_MCs_ChDsXinf;}
11573  if( HistoCode == "D_LFN_ChNb"){val_inf = fD_LFN_ChNbXinf;}
11574  if( HistoCode == "D_LFN_ChDs"){val_inf = fD_LFN_ChDsXinf;}
11575  if( HistoCode == "D_HFN_ChNb"){val_inf = fD_HFN_ChNbXinf;}
11576  if( HistoCode == "D_HFN_ChDs"){val_inf = fD_HFN_ChDsXinf;}
11577  if( HistoCode == "D_SCs_ChNb"){val_inf = fD_SCs_ChNbXinf;}
11578  if( HistoCode == "D_SCs_ChDs"){val_inf = fD_SCs_ChDsXinf;}
11579  if( HistoCode == "D_MSp_SpNb"){val_inf = fD_Ped_ChNbXinf;}
11580  if( HistoCode == "D_MSp_SpDs"){val_inf = fD_Ped_ChDsXinf;}
11581  if( HistoCode == "D_SSp_SpNb"){val_inf = fD_TNo_ChNbXinf;}
11582  if( HistoCode == "D_SSp_SpDs"){val_inf = fD_TNo_ChDsXinf;}
11583  if( HistoCode == "D_Adc_EvNb"){val_inf = fD_Adc_EvNbXinf;}
11584  if( HistoCode == "D_Adc_EvDs"){val_inf = fD_Adc_EvDsXinf;}
11585  if( HistoCode == "H_Ped_Date"){val_inf = fH_Ped_DateXinf;}
11586  if( HistoCode == "H_TNo_Date"){val_inf = fH_TNo_DateXinf;}
11587  if( HistoCode == "H_MCs_Date"){val_inf = fH_MCs_DateXinf;}
11588  if( HistoCode == "H_LFN_Date"){val_inf = fH_LFN_DateXinf;}
11589  if( HistoCode == "H_HFN_Date"){val_inf = fH_HFN_DateXinf;}
11590  if( HistoCode == "H_SCs_Date"){val_inf = fH_SCs_DateXinf;}
11591  if( HistoCode == "H_Ped_RuDs"){val_inf = fH_Ped_RuDsXinf;}
11592  if( HistoCode == "H_TNo_RuDs"){val_inf = fH_TNo_RuDsXinf;}
11593  if( HistoCode == "H_MCs_RuDs"){val_inf = fH_MCs_RuDsXinf;}
11594  if( HistoCode == "H_LFN_RuDs"){val_inf = fH_LFN_RuDsXinf;}
11595  if( HistoCode == "H_HFN_RuDs"){val_inf = fH_HFN_RuDsXinf;}
11596  if( HistoCode == "H_SCs_RuDs"){val_inf = fH_SCs_RuDsXinf;}
11597  return val_inf;
11598 }// end of GetXinfValueFromMemo(...)
11599 
11601 {return fH1SameOnePlotXinf;}
11602 
11603 Double_t TEcnaHistos::GetXsupValueFromMemo(const TString& HistoCode)
11604 {
11605  Double_t val_sup = (Double_t)0.;
11606 
11607  if( HistoCode == "D_NOE_ChNb"){val_sup = fD_NOE_ChNbXsup;}
11608  if( HistoCode == "D_NOE_ChDs"){val_sup = fD_NOE_ChDsXsup;}
11609  if( HistoCode == "D_Ped_ChNb"){val_sup = fD_Ped_ChNbXsup;}
11610  if( HistoCode == "D_Ped_ChDs"){val_sup = fD_Ped_ChDsXsup;}
11611  if( HistoCode == "D_TNo_ChNb"){val_sup = fD_TNo_ChNbXsup;}
11612  if( HistoCode == "D_TNo_ChDs"){val_sup = fD_TNo_ChDsXsup;}
11613  if( HistoCode == "D_MCs_ChNb"){val_sup = fD_MCs_ChNbXsup;}
11614  if( HistoCode == "D_MCs_ChDs"){val_sup = fD_MCs_ChDsXsup;}
11615  if( HistoCode == "D_LFN_ChNb"){val_sup = fD_LFN_ChNbXsup;}
11616  if( HistoCode == "D_LFN_ChDs"){val_sup = fD_LFN_ChDsXsup;}
11617  if( HistoCode == "D_HFN_ChNb"){val_sup = fD_HFN_ChNbXsup;}
11618  if( HistoCode == "D_HFN_ChDs"){val_sup = fD_HFN_ChDsXsup;}
11619  if( HistoCode == "D_SCs_ChNb"){val_sup = fD_SCs_ChNbXsup;}
11620  if( HistoCode == "D_SCs_ChDs"){val_sup = fD_SCs_ChDsXsup;}
11621  if( HistoCode == "D_MSp_SpNb"){val_sup = fD_Ped_ChNbXsup;}
11622  if( HistoCode == "D_MSp_SpDs"){val_sup = fD_Ped_ChDsXsup;}
11623  if( HistoCode == "D_SSp_SpNb"){val_sup = fD_TNo_ChNbXsup;}
11624  if( HistoCode == "D_SSp_SpDs"){val_sup = fD_TNo_ChDsXsup;}
11625  if( HistoCode == "D_Adc_EvNb"){val_sup = fD_Adc_EvNbXsup;}
11626  if( HistoCode == "D_Adc_EvDs"){val_sup = fD_Adc_EvDsXsup;}
11627  if( HistoCode == "H_Ped_Date"){val_sup = fH_Ped_DateXsup;}
11628  if( HistoCode == "H_TNo_Date"){val_sup = fH_TNo_DateXsup;}
11629  if( HistoCode == "H_MCs_Date"){val_sup = fH_MCs_DateXsup;}
11630  if( HistoCode == "H_LFN_Date"){val_sup = fH_LFN_DateXsup;}
11631  if( HistoCode == "H_HFN_Date"){val_sup = fH_HFN_DateXsup;}
11632  if( HistoCode == "H_SCs_Date"){val_sup = fH_SCs_DateXsup;}
11633  if( HistoCode == "H_Ped_RuDs"){val_sup = fH_Ped_RuDsXsup;}
11634  if( HistoCode == "H_TNo_RuDs"){val_sup = fH_TNo_RuDsXsup;}
11635  if( HistoCode == "H_MCs_RuDs"){val_sup = fH_MCs_RuDsXsup;}
11636  if( HistoCode == "H_LFN_RuDs"){val_sup = fH_LFN_RuDsXsup;}
11637  if( HistoCode == "H_HFN_RuDs"){val_sup = fH_HFN_RuDsXsup;}
11638  if( HistoCode == "H_SCs_RuDs"){val_sup = fH_SCs_RuDsXsup;}
11639  return val_sup;
11640 }// end of GetXsupValueFromMemo(...)
11641 
11643 {return fH1SameOnePlotXsup;}
11644 
11645 //-------------------------------------------------------------------------------------------
11646 //
11647 // SetHistoMin, SetHistoMax, SetAllYminYmaxMemoFromDefaultValues
11648 //
11649 //-------------------------------------------------------------------------------------------
11652 
11655 
11657 {
11658 //.......... Default values for histo min and max
11659 
11660  SetYminMemoFromValue("D_NOE_ChNb", fCnaParHistos->GetYminDefaultValue("D_NOE_ChNb"));
11661  SetYmaxMemoFromValue("D_NOE_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_NOE_ChNb"));
11662 
11663  SetYminMemoFromValue("D_NOE_ChDs", fCnaParHistos->GetYminDefaultValue("D_NOE_ChDs"));
11664  SetYmaxMemoFromValue("D_NOE_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_NOE_ChDs"));
11665 
11666  SetYminMemoFromValue("D_Ped_ChNb", fCnaParHistos->GetYminDefaultValue("D_Ped_ChNb"));
11667  SetYmaxMemoFromValue("D_Ped_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_Ped_ChNb"));
11668 
11669  SetYminMemoFromValue("D_Ped_ChDs", fCnaParHistos->GetYminDefaultValue("D_Ped_ChDs"));
11670  SetYmaxMemoFromValue("D_Ped_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_Ped_ChDs"));
11671 
11672  SetYminMemoFromValue("D_TNo_ChNb", fCnaParHistos->GetYminDefaultValue("D_TNo_ChNb"));
11673  SetYmaxMemoFromValue("D_TNo_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_TNo_ChNb"));
11674 
11675  SetYminMemoFromValue("D_TNo_ChDs", fCnaParHistos->GetYminDefaultValue("D_TNo_ChDs"));
11676  SetYmaxMemoFromValue("D_TNo_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_TNo_ChDs"));
11677 
11678  SetYminMemoFromValue("D_MCs_ChNb", fCnaParHistos->GetYminDefaultValue("D_MCs_ChNb"));
11679  SetYmaxMemoFromValue("D_MCs_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_MCs_ChNb"));
11680 
11681  SetYminMemoFromValue("D_MCs_ChDs", fCnaParHistos->GetYminDefaultValue("D_MCs_ChDs"));
11682  SetYmaxMemoFromValue("D_MCs_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_MCs_ChDs"));
11683 
11684  SetYminMemoFromValue("D_LFN_ChNb", fCnaParHistos->GetYminDefaultValue("D_LFN_ChNb"));
11685  SetYmaxMemoFromValue("D_LFN_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_LFN_ChNb"));
11686 
11687  SetYminMemoFromValue("D_LFN_ChDs", fCnaParHistos->GetYminDefaultValue("D_LFN_ChDs"));
11688  SetYmaxMemoFromValue("D_LFN_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_LFN_ChDs"));
11689 
11690  SetYminMemoFromValue("D_HFN_ChNb", fCnaParHistos->GetYminDefaultValue("D_HFN_ChNb"));
11691  SetYmaxMemoFromValue("D_HFN_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_HFN_ChNb"));
11692 
11693  SetYminMemoFromValue("D_HFN_ChDs", fCnaParHistos->GetYminDefaultValue("D_HFN_ChDs"));
11694  SetYmaxMemoFromValue("D_HFN_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_HFN_ChDs"));
11695 
11696  SetYminMemoFromValue("D_SCs_ChNb", fCnaParHistos->GetYminDefaultValue("D_SCs_ChNb"));
11697  SetYmaxMemoFromValue("D_SCs_ChNb", fCnaParHistos->GetYmaxDefaultValue("D_SCs_ChNb"));
11698 
11699  SetYminMemoFromValue("D_SCs_ChDs", fCnaParHistos->GetYminDefaultValue("D_SCs_ChDs"));
11700  SetYmaxMemoFromValue("D_SCs_ChDs", fCnaParHistos->GetYmaxDefaultValue("D_SCs_ChDs"));
11701 
11702  SetYminMemoFromValue("D_MSp_SpNb", fCnaParHistos->GetYminDefaultValue("D_MSp_SpNb"));
11703  SetYmaxMemoFromValue("D_MSp_SpNb", fCnaParHistos->GetYmaxDefaultValue("D_MSp_SpNb"));
11704 
11705  SetYminMemoFromValue("D_MSp_SpDs", fCnaParHistos->GetYminDefaultValue("D_MSp_SpDs"));
11706  SetYmaxMemoFromValue("D_MSp_SpDs", fCnaParHistos->GetYmaxDefaultValue("D_MSp_SpDs"));
11707 
11708  SetYminMemoFromValue("D_SSp_SpNb", fCnaParHistos->GetYminDefaultValue("D_SSp_SpNb"));
11709  SetYmaxMemoFromValue("D_SSp_SpNb", fCnaParHistos->GetYmaxDefaultValue("D_SSp_SpNb"));
11710 
11711  SetYminMemoFromValue("D_SSp_SpDs", fCnaParHistos->GetYminDefaultValue("D_SSp_SpDs"));
11712  SetYmaxMemoFromValue("D_SSp_SpDs", fCnaParHistos->GetYmaxDefaultValue("D_SSp_SpDs"));
11713 
11714  SetYminMemoFromValue("D_Adc_EvDs", fCnaParHistos->GetYminDefaultValue("D_Adc_EvDs"));
11715  SetYmaxMemoFromValue("D_Adc_EvDs", fCnaParHistos->GetYmaxDefaultValue("D_Adc_EvDs"));
11716 
11717  SetYminMemoFromValue("D_Adc_EvNb", fCnaParHistos->GetYminDefaultValue("D_Adc_EvNb"));
11718  SetYmaxMemoFromValue("D_Adc_EvNb", fCnaParHistos->GetYmaxDefaultValue("D_Adc_EvNb"));
11719 
11720  SetYminMemoFromValue("H_Ped_Date", fCnaParHistos->GetYminDefaultValue("H_Ped_Date"));
11721  SetYmaxMemoFromValue("H_Ped_Date", fCnaParHistos->GetYmaxDefaultValue("H_Ped_Date"));
11722 
11723  SetYminMemoFromValue("H_TNo_Date", fCnaParHistos->GetYminDefaultValue("H_TNo_Date"));
11724  SetYmaxMemoFromValue("H_TNo_Date", fCnaParHistos->GetYmaxDefaultValue("H_TNo_Date"));
11725 
11726  SetYminMemoFromValue("H_LFN_Date", fCnaParHistos->GetYminDefaultValue("H_LFN_Date"));
11727  SetYmaxMemoFromValue("H_LFN_Date", fCnaParHistos->GetYmaxDefaultValue("H_LFN_Date"));
11728 
11729  SetYminMemoFromValue("H_HFN_Date", fCnaParHistos->GetYminDefaultValue("H_HFN_Date"));
11730  SetYmaxMemoFromValue("H_HFN_Date", fCnaParHistos->GetYmaxDefaultValue("H_HFN_Date"));
11731 
11732  SetYminMemoFromValue("H_MCs_Date", fCnaParHistos->GetYminDefaultValue("H_MCs_Date"));
11733  SetYmaxMemoFromValue("H_MCs_Date", fCnaParHistos->GetYmaxDefaultValue("H_MCs_Date"));
11734 
11735  SetYminMemoFromValue("H_SCs_Date", fCnaParHistos->GetYminDefaultValue("H_SCs_Date"));
11736  SetYmaxMemoFromValue("H_SCs_Date", fCnaParHistos->GetYmaxDefaultValue("H_SCs_Date"));
11737 
11738  SetYminMemoFromValue("H_Ped_RuDs", fCnaParHistos->GetYminDefaultValue("H_Ped_RuDs"));
11739  SetYmaxMemoFromValue("H_Ped_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_Ped_RuDs"));
11740 
11741  SetYminMemoFromValue("H_TNo_RuDs", fCnaParHistos->GetYminDefaultValue("H_TNo_RuDs"));
11742  SetYmaxMemoFromValue("H_TNo_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_TNo_RuDs"));
11743 
11744  SetYminMemoFromValue("H_LFN_RuDs", fCnaParHistos->GetYminDefaultValue("H_LFN_RuDs"));
11745  SetYmaxMemoFromValue("H_LFN_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_LFN_RuDs"));
11746 
11747  SetYminMemoFromValue("H_HFN_RuDs", fCnaParHistos->GetYminDefaultValue("H_HFN_RuDs"));
11748  SetYmaxMemoFromValue("H_HFN_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_HFN_RuDs"));
11749 
11750  SetYminMemoFromValue("H_MCs_RuDs", fCnaParHistos->GetYminDefaultValue("H_MCs_RuDs"));
11751  SetYmaxMemoFromValue("H_MCs_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_MCs_RuDs"));
11752 
11753  SetYminMemoFromValue("H_SCs_RuDs", fCnaParHistos->GetYminDefaultValue("H_SCs_RuDs"));
11754  SetYmaxMemoFromValue("H_SCs_RuDs", fCnaParHistos->GetYmaxDefaultValue("H_SCs_RuDs"));
11755 
11756  SetYminMemoFromValue("H2LFccMosMatrix", fCnaParHistos->GetYminDefaultValue("H2LFccMosMatrix"));
11757  SetYmaxMemoFromValue("H2LFccMosMatrix", fCnaParHistos->GetYmaxDefaultValue("H2LFccMosMatrix"));
11758 
11759  SetYminMemoFromValue("H2HFccMosMatrix", fCnaParHistos->GetYminDefaultValue("H2HFccMosMatrix"));
11760  SetYmaxMemoFromValue("H2HFccMosMatrix", fCnaParHistos->GetYmaxDefaultValue("H2HFccMosMatrix"));
11761 
11762  SetYminMemoFromValue("H2CorccInStins", fCnaParHistos->GetYminDefaultValue("H2CorccInStins"));
11763  SetYmaxMemoFromValue("H2CorccInStins", fCnaParHistos->GetYmaxDefaultValue("H2CorccInStins"));
11764 
11765  //........... set user's min and max flags to "OFF" and values to -1 and +1 (just to have fUserHistoMin < fUserHistoMax)
11766  fUserHistoMin = -1.; fFlagUserHistoMin = "OFF";
11767  fUserHistoMax = 1.; fFlagUserHistoMax = "OFF";
11768 } // end of SetAllYminYmaxMemoFromDefaultValues()
11769 
11770 //===========================================================================
11771 //
11772 // SetYminMemoFromValue(...), SetYmaxMemoFromValue(...)
11773 // GetYminValueFromMemo(...), GetYmaxValueFromMemo(...)
11774 //
11775 //===========================================================================
11776 void TEcnaHistos::SetYminMemoFromValue(const TString& HistoCode, const Double_t& value)
11777 {
11778  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmin = value;}
11779  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmin = value;}
11780  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmin = value;}
11781  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmin = value;}
11782  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmin = value;}
11783  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmin = value;}
11784  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmin = value;}
11785  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmin = value;}
11786  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmin = value;}
11787  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmin = value;}
11788  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmin = value;}
11789  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmin = value;}
11790  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmin = value;}
11791  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmin = value;}
11792  if( HistoCode == "D_MSp_SpNb" ){fD_Ped_ChNbYmin = value;}
11793  if( HistoCode == "D_MSp_SpDs" ){fD_Ped_ChDsYmin = value;}
11794  if( HistoCode == "D_SSp_SpNb" ){fD_TNo_ChNbYmin = value;}
11795  if( HistoCode == "D_SSp_SpDs" ){fD_TNo_ChDsYmin = value;}
11796  if( HistoCode == "D_Adc_EvNb" ){fD_Ped_ChNbYmin = value;}
11797  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmin = value;}
11798  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmin = value;}
11799  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmin = value;}
11800  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmin = value;}
11801  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmin = value;}
11802  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmin = value;}
11803  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmin = value;}
11804  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmin = value;}
11805  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmin = value;}
11806  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmin = value;}
11807  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmin = value;}
11808  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmin = value;}
11809  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmin = value;}
11810  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmin = value;}
11811  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmin = value;}
11812  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmin = value;}
11813 }// end of SetYminMemoFromValue(...)
11814 
11815 void TEcnaHistos::SetYmaxMemoFromValue(const TString& HistoCode, const Double_t& value)
11816 {
11817  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmax = value;}
11818  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmax = value;}
11819  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmax = value;}
11820  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmax = value;}
11821  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmax = value;}
11822  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmax = value;}
11823  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmax = value;}
11824  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmax = value;}
11825  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmax = value;}
11826  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmax = value;}
11827  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmax = value;}
11828  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmax = value;}
11829  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmax = value;}
11830  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmax = value;}
11831  if( HistoCode == "D_MSp_SpNb" ){fD_Ped_ChNbYmax = value;}
11832  if( HistoCode == "D_MSp_SpDs" ){fD_Ped_ChDsYmax = value;}
11833  if( HistoCode == "D_SSp_SpNb" ){fD_TNo_ChNbYmax = value;}
11834  if( HistoCode == "D_SSp_SpDs" ){fD_TNo_ChDsYmax = value;}
11835  if( HistoCode == "D_Adc_EvNb" ){fD_Ped_ChNbYmax = value;}
11836  if( HistoCode == "D_Adc_EvDs" ){fD_Ped_ChDsYmax = value;}
11837  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmax = value;}
11838  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmax = value;}
11839  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmax = value;}
11840  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmax = value;}
11841  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmax = value;}
11842  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmax = value;}
11843  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmax = value;}
11844  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmax = value;}
11845  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmax = value;}
11846  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmax = value;}
11847  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmax = value;}
11848  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmax = value;}
11849  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmax = value;}
11850  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmax = value;}
11851  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmax = value;}
11852 }// end of SetYmaxMemoFromValue(...)
11853 
11854 Double_t TEcnaHistos::GetYminValueFromMemo(const TString& HistoCode)
11855 {
11856  Double_t val_min = (Double_t)0.;
11857  Double_t val_min_proj = (Double_t)0.1;
11858 
11859  if( HistoCode == "D_NOE_ChNb" ){val_min = fD_NOE_ChNbYmin;}
11860  if( HistoCode == "D_NOE_ChDs" ){val_min = val_min_proj;}
11861  if( HistoCode == "D_Ped_ChNb" ){val_min = fD_Ped_ChNbYmin;}
11862  if( HistoCode == "D_Ped_ChDs" ){val_min = val_min_proj;}
11863  if( HistoCode == "D_TNo_ChNb" ){val_min = fD_TNo_ChNbYmin;}
11864  if( HistoCode == "D_TNo_ChDs" ){val_min = val_min_proj;}
11865  if( HistoCode == "D_MCs_ChNb" ){val_min = fD_MCs_ChNbYmin;}
11866  if( HistoCode == "D_MCs_ChDs" ){val_min = val_min_proj;}
11867  if( HistoCode == "D_LFN_ChNb" ){val_min = fD_LFN_ChNbYmin;}
11868  if( HistoCode == "D_LFN_ChDs" ){val_min = val_min_proj;}
11869  if( HistoCode == "D_HFN_ChNb" ){val_min = fD_HFN_ChNbYmin;}
11870  if( HistoCode == "D_HFN_ChDs" ){val_min = val_min_proj;}
11871  if( HistoCode == "D_SCs_ChNb" ){val_min = fD_SCs_ChNbYmin;}
11872  if( HistoCode == "D_SCs_ChDs" ){val_min = val_min_proj;}
11873  if( HistoCode == "D_MSp_SpNb" ){val_min = fD_Ped_ChNbYmin;}
11874  if( HistoCode == "D_MSp_SpDs" ){val_min = val_min_proj;}
11875  if( HistoCode == "D_SSp_SpNb" ){val_min = fD_TNo_ChNbYmin;}
11876  if( HistoCode == "D_SSp_SpDs" ){val_min = val_min_proj;}
11877  if( HistoCode == "D_Adc_EvNb" ){val_min = fD_Ped_ChNbYmin;}
11878  if( HistoCode == "D_Adc_EvDs" ){val_min = val_min_proj;}
11879  if( HistoCode == "H_Ped_Date" ){val_min = fH_Ped_DateYmin;}
11880  if( HistoCode == "H_TNo_Date" ){val_min = fH_TNo_DateYmin;}
11881  if( HistoCode == "H_MCs_Date" ){val_min = fH_MCs_DateYmin;}
11882  if( HistoCode == "H_LFN_Date" ){val_min = fH_LFN_DateYmin;}
11883  if( HistoCode == "H_HFN_Date" ){val_min = fH_HFN_DateYmin;}
11884  if( HistoCode == "H_SCs_Date" ){val_min = fH_SCs_DateYmin;}
11885  if( HistoCode == "H_Ped_RuDs" ){val_min = fH_Ped_RuDsYmin;}
11886  if( HistoCode == "H_TNo_RuDs" ){val_min = fH_TNo_RuDsYmin;}
11887  if( HistoCode == "H_MCs_RuDs" ){val_min = fH_MCs_RuDsYmin;}
11888  if( HistoCode == "H_LFN_RuDs" ){val_min = fH_LFN_RuDsYmin;}
11889  if( HistoCode == "H_HFN_RuDs" ){val_min = fH_HFN_RuDsYmin;}
11890  if( HistoCode == "H_SCs_RuDs" ){val_min = fH_SCs_RuDsYmin;}
11891  if( HistoCode == "H2LFccMosMatrix" ){val_min = fH2LFccMosMatrixYmin;}
11892  if( HistoCode == "H2HFccMosMatrix" ){val_min = fH2HFccMosMatrixYmin;}
11893  if( HistoCode == "H2CorccInStins" ){val_min = fH2CorccInStinsYmin;}
11894  return val_min;
11895 }// end of GetYminValueFromMemo(...)
11896 
11897 Double_t TEcnaHistos::GetYmaxValueFromMemo(const TString& HistoCode)
11898 {
11899  Double_t val_max = (Double_t)0.;
11900  Double_t val_max_proj = (Double_t)2000.;
11901 
11902  if( HistoCode == "D_NOE_ChNb" ){val_max = fD_NOE_ChNbYmax;}
11903  if( HistoCode == "D_NOE_ChDs" ){val_max = val_max_proj;}
11904  if( HistoCode == "D_Ped_ChNb" ){val_max = fD_Ped_ChNbYmax;}
11905  if( HistoCode == "D_Ped_ChDs" ){val_max = val_max_proj;}
11906  if( HistoCode == "D_TNo_ChNb" ){val_max = fD_TNo_ChNbYmax;}
11907  if( HistoCode == "D_TNo_ChDs" ){val_max = val_max_proj;}
11908  if( HistoCode == "D_MCs_ChNb" ){val_max = fD_MCs_ChNbYmax;}
11909  if( HistoCode == "D_MCs_ChDs" ){val_max = val_max_proj;}
11910  if( HistoCode == "D_LFN_ChNb" ){val_max = fD_LFN_ChNbYmax;}
11911  if( HistoCode == "D_LFN_ChDs" ){val_max = val_max_proj;}
11912  if( HistoCode == "D_HFN_ChNb" ){val_max = fD_HFN_ChNbYmax;}
11913  if( HistoCode == "D_HFN_ChDs" ){val_max = val_max_proj;}
11914  if( HistoCode == "D_SCs_ChNb" ){val_max = fD_SCs_ChNbYmax;}
11915  if( HistoCode == "D_SCs_ChDs" ){val_max = val_max_proj;}
11916  if( HistoCode == "D_MSp_SpNb" ){val_max = fD_Ped_ChNbYmax;}
11917  if( HistoCode == "D_MSp_SpDs" ){val_max = val_max_proj;}
11918  if( HistoCode == "D_SSp_SpNb" ){val_max = fD_TNo_ChNbYmax;}
11919  if( HistoCode == "D_SSp_SpDs" ){val_max = val_max_proj;}
11920  if( HistoCode == "D_Adc_EvNb" ){val_max = fD_Ped_ChNbYmax;}
11921  if( HistoCode == "D_Adc_EvDs" ){val_max = val_max_proj;}
11922  if( HistoCode == "H_Ped_Date" ){val_max = fH_Ped_DateYmax;}
11923  if( HistoCode == "H_TNo_Date" ){val_max = fH_TNo_DateYmax;}
11924  if( HistoCode == "H_MCs_Date" ){val_max = fH_MCs_DateYmax;}
11925  if( HistoCode == "H_LFN_Date" ){val_max = fH_LFN_DateYmax;}
11926  if( HistoCode == "H_HFN_Date" ){val_max = fH_HFN_DateYmax;}
11927  if( HistoCode == "H_SCs_Date" ){val_max = fH_SCs_DateYmax;}
11928  if( HistoCode == "H_Ped_RuDs" ){val_max = fH_Ped_RuDsYmax;}
11929  if( HistoCode == "H_TNo_RuDs" ){val_max = fH_TNo_RuDsYmax;}
11930  if( HistoCode == "H_MCs_RuDs" ){val_max = fH_MCs_RuDsYmax;}
11931  if( HistoCode == "H_LFN_RuDs" ){val_max = fH_LFN_RuDsYmax;}
11932  if( HistoCode == "H_HFN_RuDs" ){val_max = fH_HFN_RuDsYmax;}
11933  if( HistoCode == "H_SCs_RuDs" ){val_max = fH_SCs_RuDsYmax;}
11934  if( HistoCode == "H2LFccMosMatrix" ){val_max = fH2LFccMosMatrixYmax;}
11935  if( HistoCode == "H2HFccMosMatrix" ){val_max = fH2HFccMosMatrixYmax;}
11936  if( HistoCode == "H2CorccInStins" ){val_max = fH2CorccInStinsYmax;}
11937  return val_max;
11938 }// end of GetYmaxValueFromMemo(...)
11939 
11940 void TEcnaHistos::SetYminMemoFromPreviousMemo(const TString& HistoCode)
11941 {
11942 // InitQuantity Ymin
11943 
11944  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmin = GetYminValueFromMemo("D_NOE_ChNb");}
11945  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmin = GetYminValueFromMemo("D_NOE_ChDs");}
11946  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmin = GetYminValueFromMemo("D_Ped_ChNb");}
11947  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmin = GetYminValueFromMemo("D_Ped_ChDs");}
11948  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmin = GetYminValueFromMemo("D_TNo_ChNb");}
11949  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmin = GetYminValueFromMemo("D_TNo_ChDs");}
11950  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmin = GetYminValueFromMemo("D_MCs_ChNb");}
11951  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmin = GetYminValueFromMemo("D_MCs_ChDs");}
11952  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmin = GetYminValueFromMemo("D_LFN_ChNb");}
11953  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmin = GetYminValueFromMemo("D_LFN_ChDs");}
11954  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmin = GetYminValueFromMemo("D_HFN_ChNb");}
11955  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmin = GetYminValueFromMemo("D_HFN_ChDs");}
11956  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmin = GetYminValueFromMemo("D_SCs_ChNb");}
11957  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmin = GetYminValueFromMemo("D_SCs_ChDs");}
11958  if( HistoCode == "D_MSp_SpNb" ){fD_MSp_SpNbYmin = GetYminValueFromMemo("D_MSp_SpNb");}
11959  if( HistoCode == "D_MSp_SpDs" ){fD_MSp_SpDsYmin = GetYminValueFromMemo("D_MSp_SpDs");}
11960  if( HistoCode == "D_SSp_SpNb" ){fD_SSp_SpNbYmin = GetYminValueFromMemo("D_SSp_SpNb");}
11961  if( HistoCode == "D_SSp_SpDs" ){fD_SSp_SpDsYmin = GetYminValueFromMemo("D_SSp_SpDs");}
11962  if( HistoCode == "D_Adc_EvNb" ){fD_Adc_EvNbYmin = GetYminValueFromMemo("D_Adc_EvNb");}
11963  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmin = GetYminValueFromMemo("D_Adc_EvDs");}
11964  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmin = GetYminValueFromMemo("H_Ped_Date");}
11965  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmin = GetYminValueFromMemo("H_TNo_Date");}
11966  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmin = GetYminValueFromMemo("H_MCs_Date");}
11967  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmin = GetYminValueFromMemo("H_LFN_Date");}
11968  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmin = GetYminValueFromMemo("H_HFN_Date");}
11969  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmin = GetYminValueFromMemo("H_SCs_Date");}
11970  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmin = GetYminValueFromMemo("H_Ped_RuDs");}
11971  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmin = GetYminValueFromMemo("H_TNo_RuDs");}
11972  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmin = GetYminValueFromMemo("H_MCs_RuDs");}
11973  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmin = GetYminValueFromMemo("H_LFN_RuDs");}
11974  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmin = GetYminValueFromMemo("H_HFN_RuDs");}
11975  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmin = GetYminValueFromMemo("H_SCs_RuDs");}
11976  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmin = GetYminValueFromMemo("H2LFccMosMatrix");}
11977  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmin = GetYminValueFromMemo("H2HFccMosMatrix");}
11978  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmin = GetYminValueFromMemo("H2CorccInStins");}
11979 }// end of SetYminMemoFromPreviousMemo(...)
11980 
11981 void TEcnaHistos::SetYmaxMemoFromPreviousMemo(const TString& HistoCode)
11982 {
11983 // InitQuantity Ymax
11984 
11985  if( HistoCode == "D_NOE_ChNb" ){fD_NOE_ChNbYmax = GetYmaxValueFromMemo("D_NOE_ChNb");}
11986  if( HistoCode == "D_NOE_ChDs" ){fD_NOE_ChDsYmax = GetYmaxValueFromMemo("D_NOE_ChDs");}
11987  if( HistoCode == "D_Ped_ChNb" ){fD_Ped_ChNbYmax = GetYmaxValueFromMemo("D_Ped_ChNb");}
11988  if( HistoCode == "D_Ped_ChDs" ){fD_Ped_ChDsYmax = GetYmaxValueFromMemo("D_Ped_ChDs");}
11989  if( HistoCode == "D_TNo_ChNb" ){fD_TNo_ChNbYmax = GetYmaxValueFromMemo("D_TNo_ChNb");}
11990  if( HistoCode == "D_TNo_ChDs" ){fD_TNo_ChDsYmax = GetYmaxValueFromMemo("D_TNo_ChDs");}
11991  if( HistoCode == "D_MCs_ChNb" ){fD_MCs_ChNbYmax = GetYmaxValueFromMemo("D_MCs_ChNb");}
11992  if( HistoCode == "D_MCs_ChDs" ){fD_MCs_ChDsYmax = GetYmaxValueFromMemo("D_MCs_ChDs");}
11993  if( HistoCode == "D_LFN_ChNb" ){fD_LFN_ChNbYmax = GetYmaxValueFromMemo("D_LFN_ChNb");}
11994  if( HistoCode == "D_LFN_ChDs" ){fD_LFN_ChDsYmax = GetYmaxValueFromMemo("D_LFN_ChDs");}
11995  if( HistoCode == "D_HFN_ChNb" ){fD_HFN_ChNbYmax = GetYmaxValueFromMemo("D_HFN_ChNb");}
11996  if( HistoCode == "D_HFN_ChDs" ){fD_HFN_ChDsYmax = GetYmaxValueFromMemo("D_HFN_ChDs");}
11997  if( HistoCode == "D_SCs_ChNb" ){fD_SCs_ChNbYmax = GetYmaxValueFromMemo("D_SCs_ChNb");}
11998  if( HistoCode == "D_SCs_ChDs" ){fD_SCs_ChDsYmax = GetYmaxValueFromMemo("D_SCs_ChDs");}
11999  if( HistoCode == "D_MSp_SpNb" ){fD_MSp_SpNbYmax = GetYmaxValueFromMemo("D_MSp_SpNb");}
12000  if( HistoCode == "D_MSp_SpDs" ){fD_MSp_SpDsYmax = GetYmaxValueFromMemo("D_MSp_SpDs");}
12001  if( HistoCode == "D_SSp_SpNb" ){fD_SSp_SpNbYmax = GetYmaxValueFromMemo("D_SSp_SpNb");}
12002  if( HistoCode == "D_SSp_SpDs" ){fD_SSp_SpDsYmax = GetYmaxValueFromMemo("D_SSp_SpDs");}
12003  if( HistoCode == "D_Adc_EvNb" ){fD_Adc_EvNbYmax = GetYmaxValueFromMemo("D_Adc_EvNb");}
12004  if( HistoCode == "D_Adc_EvDs" ){fD_Adc_EvDsYmax = GetYmaxValueFromMemo("D_Adc_EvDs");}
12005  if( HistoCode == "H_Ped_Date" ){fH_Ped_DateYmax = GetYmaxValueFromMemo("H_Ped_Date");}
12006  if( HistoCode == "H_TNo_Date" ){fH_TNo_DateYmax = GetYmaxValueFromMemo("H_TNo_Date");}
12007  if( HistoCode == "H_MCs_Date" ){fH_MCs_DateYmax = GetYmaxValueFromMemo("H_MCs_Date");}
12008  if( HistoCode == "H_LFN_Date" ){fH_LFN_DateYmax = GetYmaxValueFromMemo("H_LFN_Date");}
12009  if( HistoCode == "H_HFN_Date" ){fH_HFN_DateYmax = GetYmaxValueFromMemo("H_HFN_Date");}
12010  if( HistoCode == "H_SCs_Date" ){fH_SCs_DateYmax = GetYmaxValueFromMemo("H_SCs_Date");}
12011  if( HistoCode == "H_Ped_RuDs" ){fH_Ped_RuDsYmax = GetYmaxValueFromMemo("H_Ped_RuDs");}
12012  if( HistoCode == "H_TNo_RuDs" ){fH_TNo_RuDsYmax = GetYmaxValueFromMemo("H_TNo_RuDs");}
12013  if( HistoCode == "H_MCs_RuDs" ){fH_MCs_RuDsYmax = GetYmaxValueFromMemo("H_MCs_RuDs");}
12014  if( HistoCode == "H_LFN_RuDs" ){fH_LFN_RuDsYmax = GetYmaxValueFromMemo("H_LFN_RuDs");}
12015  if( HistoCode == "H_HFN_RuDs" ){fH_HFN_RuDsYmax = GetYmaxValueFromMemo("H_HFN_RuDs");}
12016  if( HistoCode == "H_SCs_RuDs" ){fH_SCs_RuDsYmax = GetYmaxValueFromMemo("H_SCs_RuDs");}
12017  if( HistoCode == "H2LFccMosMatrix" ){fH2LFccMosMatrixYmax = GetYmaxValueFromMemo("H2LFccMosMatrix");}
12018  if( HistoCode == "H2HFccMosMatrix" ){fH2HFccMosMatrixYmax = GetYmaxValueFromMemo("H2HFccMosMatrix");}
12019  if( HistoCode == "H2CorccInStins" ){fH2CorccInStinsYmax = GetYmaxValueFromMemo("H2CorccInStins");}
12020 }// end of SetYmaxMemoFromPreviousMemo(...)
12021 
12022 //------------------------------------------------------------------------------------------------------
12023 void TEcnaHistos::SetXVarMemo(const TString& HistoCode, const TString& opt_plot, const TString& xvar)
12024 {
12025 
12026  if( opt_plot == fSameOnePlot ){fXMemoH1SamePlus = xvar;}
12027 
12028  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12029  {
12030  if( HistoCode == "D_NOE_ChNb"){fXMemoD_NOE_ChNb = xvar;}
12031  if( HistoCode == "D_NOE_ChDs"){fXMemoD_NOE_ChDs = xvar;}
12032  if( HistoCode == "D_Ped_ChNb"){fXMemoD_Ped_ChNb = xvar;}
12033  if( HistoCode == "D_Ped_ChDs"){fXMemoD_Ped_ChDs = xvar;}
12034  if( HistoCode == "D_TNo_ChNb"){fXMemoD_TNo_ChNb = xvar;}
12035  if( HistoCode == "D_TNo_ChDs"){fXMemoD_TNo_ChDs = xvar;}
12036  if( HistoCode == "D_MCs_ChNb"){fXMemoD_MCs_ChNb = xvar;}
12037  if( HistoCode == "D_MCs_ChDs"){fXMemoD_MCs_ChDs = xvar;}
12038  if( HistoCode == "D_LFN_ChNb"){fXMemoD_LFN_ChNb = xvar;}
12039  if( HistoCode == "D_LFN_ChDs"){fXMemoD_LFN_ChDs = xvar;}
12040  if( HistoCode == "D_HFN_ChNb"){fXMemoD_HFN_ChNb = xvar;}
12041  if( HistoCode == "D_HFN_ChDs"){fXMemoD_HFN_ChDs = xvar;}
12042  if( HistoCode == "D_SCs_ChNb"){fXMemoD_SCs_ChNb = xvar;}
12043  if( HistoCode == "D_SCs_ChDs"){fXMemoD_SCs_ChDs = xvar;}
12044  if( HistoCode == "D_MSp_SpNb"){fXMemoD_MSp_SpNb = xvar;}
12045  if( HistoCode == "D_MSp_SpDs"){fXMemoD_MSp_SpDs = xvar;}
12046  if( HistoCode == "D_SSp_SpNb"){fXMemoD_SSp_SpNb = xvar;}
12047  if( HistoCode == "D_SSp_SpDs"){fXMemoD_SSp_SpDs = xvar;}
12048  if( HistoCode == "D_Adc_EvNb"){fXMemoD_Adc_EvNb = xvar;}
12049  if( HistoCode == "D_Adc_EvDs"){fXMemoD_Adc_EvDs = xvar;}
12050  if( HistoCode == "H_Ped_Date"){fXMemoH_Ped_Date = xvar;}
12051  if( HistoCode == "H_TNo_Date"){fXMemoH_TNo_Date = xvar;}
12052  if( HistoCode == "H_MCs_Date"){fXMemoH_MCs_Date = xvar;}
12053  if( HistoCode == "H_LFN_Date"){fXMemoH_LFN_Date = xvar;}
12054  if( HistoCode == "H_HFN_Date"){fXMemoH_HFN_Date = xvar;}
12055  if( HistoCode == "H_SCs_Date"){fXMemoH_SCs_Date = xvar;}
12056  if( HistoCode == "H_Ped_RuDs"){fXMemoH_Ped_RuDs = xvar;}
12057  if( HistoCode == "H_TNo_RuDs"){fXMemoH_TNo_RuDs = xvar;}
12058  if( HistoCode == "H_MCs_RuDs"){fXMemoH_MCs_RuDs = xvar;}
12059  if( HistoCode == "H_LFN_RuDs"){fXMemoH_LFN_RuDs = xvar;}
12060  if( HistoCode == "H_HFN_RuDs"){fXMemoH_HFN_RuDs = xvar;}
12061  if( HistoCode == "H_SCs_RuDs"){fXMemoH_SCs_RuDs = xvar;}
12062  }
12063 }// end of SetXVarMemo(...)
12064 
12065 TString TEcnaHistos::GetXVarFromMemo(const TString& HistoCode, const TString& opt_plot)
12066 {
12067  TString xvar = "(xvar not found)";
12068 
12069  if( opt_plot == fSameOnePlot ){xvar = fXMemoH1SamePlus;}
12070 
12071  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12072  {
12073  if( HistoCode == "D_NOE_ChNb"){xvar = fXMemoD_NOE_ChNb;}
12074  if( HistoCode == "D_NOE_ChDs"){xvar = fXMemoD_NOE_ChDs;}
12075  if( HistoCode == "D_Ped_ChNb"){xvar = fXMemoD_Ped_ChNb;}
12076  if( HistoCode == "D_Ped_ChDs"){xvar = fXMemoD_Ped_ChDs;}
12077  if( HistoCode == "D_TNo_ChNb"){xvar = fXMemoD_TNo_ChNb;}
12078  if( HistoCode == "D_TNo_ChDs"){xvar = fXMemoD_TNo_ChDs;}
12079  if( HistoCode == "D_MCs_ChNb"){xvar = fXMemoD_MCs_ChNb;}
12080  if( HistoCode == "D_MCs_ChDs"){xvar = fXMemoD_MCs_ChDs;}
12081  if( HistoCode == "D_LFN_ChNb"){xvar = fXMemoD_LFN_ChNb;}
12082  if( HistoCode == "D_LFN_ChDs"){xvar = fXMemoD_LFN_ChDs;}
12083  if( HistoCode == "D_HFN_ChNb"){xvar = fXMemoD_HFN_ChNb;}
12084  if( HistoCode == "D_HFN_ChDs"){xvar = fXMemoD_HFN_ChDs;}
12085  if( HistoCode == "D_SCs_ChNb"){xvar = fXMemoD_SCs_ChNb;}
12086  if( HistoCode == "D_SCs_ChDs"){xvar = fXMemoD_SCs_ChDs;}
12087  if( HistoCode == "D_MSp_SpNb"){xvar = fXMemoD_MSp_SpNb;}
12088  if( HistoCode == "D_MSp_SpDs"){xvar = fXMemoD_MSp_SpDs;}
12089  if( HistoCode == "D_SSp_SpNb"){xvar = fXMemoD_SSp_SpNb;}
12090  if( HistoCode == "D_SSp_SpDs"){xvar = fXMemoD_SSp_SpDs;}
12091  if( HistoCode == "D_Adc_EvNb"){xvar = fXMemoD_Adc_EvNb;}
12092  if( HistoCode == "D_Adc_EvDs"){xvar = fXMemoD_Adc_EvDs;}
12093  if( HistoCode == "H_Ped_Date"){xvar = fXMemoH_Ped_Date;}
12094  if( HistoCode == "H_TNo_Date"){xvar = fXMemoH_TNo_Date;}
12095  if( HistoCode == "H_MCs_Date"){xvar = fXMemoH_MCs_Date;}
12096  if( HistoCode == "H_LFN_Date"){xvar = fXMemoH_LFN_Date;}
12097  if( HistoCode == "H_HFN_Date"){xvar = fXMemoH_HFN_Date;}
12098  if( HistoCode == "H_SCs_Date"){xvar = fXMemoH_SCs_Date;}
12099  if( HistoCode == "H_Ped_RuDs"){xvar = fXMemoH_Ped_RuDs;}
12100  if( HistoCode == "H_TNo_RuDs"){xvar = fXMemoH_TNo_RuDs;}
12101  if( HistoCode == "H_MCs_RuDs"){xvar = fXMemoH_MCs_RuDs;}
12102  if( HistoCode == "H_LFN_RuDs"){xvar = fXMemoH_LFN_RuDs;}
12103  if( HistoCode == "H_HFN_RuDs"){xvar = fXMemoH_HFN_RuDs;}
12104  if( HistoCode == "H_SCs_RuDs"){xvar = fXMemoH_SCs_RuDs;}
12105  }
12106  return xvar;
12107 }// end of GetXVarFromMemo(...)
12108 
12109 
12110 void TEcnaHistos::SetYVarMemo(const TString& HistoCode, const TString& opt_plot, const TString& yvar)
12111 {
12112  if( opt_plot == fSameOnePlot ){fYMemoH1SamePlus = yvar;}
12113 
12114  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12115  {
12116  if( HistoCode == "D_NOE_ChNb"){fYMemoD_NOE_ChNb = yvar;}
12117  if( HistoCode == "D_NOE_ChDs"){fYMemoD_NOE_ChDs = yvar;}
12118  if( HistoCode == "D_Ped_ChNb"){fYMemoD_Ped_ChNb = yvar;}
12119  if( HistoCode == "D_Ped_ChDs"){fYMemoD_Ped_ChDs = yvar;}
12120  if( HistoCode == "D_TNo_ChNb"){fYMemoD_TNo_ChNb = yvar;}
12121  if( HistoCode == "D_TNo_ChDs"){fYMemoD_TNo_ChDs = yvar;}
12122  if( HistoCode == "D_MCs_ChNb"){fYMemoD_MCs_ChNb = yvar;}
12123  if( HistoCode == "D_MCs_ChDs"){fYMemoD_MCs_ChDs = yvar;}
12124  if( HistoCode == "D_LFN_ChNb"){fYMemoD_LFN_ChNb = yvar;}
12125  if( HistoCode == "D_LFN_ChDs"){fYMemoD_LFN_ChDs = yvar;}
12126  if( HistoCode == "D_HFN_ChNb"){fYMemoD_HFN_ChNb = yvar;}
12127  if( HistoCode == "D_HFN_ChDs"){fYMemoD_HFN_ChDs = yvar;}
12128  if( HistoCode == "D_SCs_ChNb"){fYMemoD_SCs_ChNb = yvar;}
12129  if( HistoCode == "D_SCs_ChDs"){fYMemoD_SCs_ChDs = yvar;}
12130  if( HistoCode == "D_MSp_SpNb"){fYMemoD_MSp_SpNb = yvar;}
12131  if( HistoCode == "D_MSp_SpDs"){fYMemoD_MSp_SpDs = yvar;}
12132  if( HistoCode == "D_SSp_SpNb"){fYMemoD_SSp_SpNb = yvar;}
12133  if( HistoCode == "D_Adc_EvDs"){fYMemoD_Adc_EvDs = yvar;}
12134  if( HistoCode == "D_SSp_SpDs"){fYMemoD_SSp_SpDs = yvar;}
12135  if( HistoCode == "D_Adc_EvNb"){fYMemoD_Adc_EvNb = yvar;}
12136  if( HistoCode == "H_Ped_Date"){fYMemoH_Ped_Date = yvar;}
12137  if( HistoCode == "H_TNo_Date"){fYMemoH_TNo_Date = yvar;}
12138  if( HistoCode == "H_MCs_Date"){fYMemoH_MCs_Date = yvar;}
12139  if( HistoCode == "H_LFN_Date"){fYMemoH_LFN_Date = yvar;}
12140  if( HistoCode == "H_HFN_Date"){fYMemoH_HFN_Date = yvar;}
12141  if( HistoCode == "H_SCs_Date"){fYMemoH_SCs_Date = yvar;}
12142  if( HistoCode == "H_Ped_RuDs"){fYMemoH_Ped_RuDs = yvar;}
12143  if( HistoCode == "H_TNo_RuDs"){fYMemoH_TNo_RuDs = yvar;}
12144  if( HistoCode == "H_MCs_RuDs"){fYMemoH_MCs_RuDs = yvar;}
12145  if( HistoCode == "H_LFN_RuDs"){fYMemoH_LFN_RuDs = yvar;}
12146  if( HistoCode == "H_HFN_RuDs"){fYMemoH_HFN_RuDs = yvar;}
12147  if( HistoCode == "H_SCs_RuDs"){fYMemoH_SCs_RuDs = yvar;}
12148  }
12149 }// end of SetYVarMemo(...)
12150 
12151 TString TEcnaHistos::GetYVarFromMemo(const TString& HistoCode, const TString& opt_plot)
12152 {
12153  TString yvar = "(yvar not found)";
12154 
12155  if( opt_plot == fSameOnePlot ){yvar = fYMemoH1SamePlus;}
12156 
12157  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12158  {
12159  if( HistoCode == "D_NOE_ChNb"){yvar = fYMemoD_NOE_ChNb;}
12160  if( HistoCode == "D_NOE_ChDs"){yvar = fYMemoD_NOE_ChDs;}
12161  if( HistoCode == "D_Ped_ChNb"){yvar = fYMemoD_Ped_ChNb;}
12162  if( HistoCode == "D_Ped_ChDs"){yvar = fYMemoD_Ped_ChDs;}
12163  if( HistoCode == "D_TNo_ChNb"){yvar = fYMemoD_TNo_ChNb;}
12164  if( HistoCode == "D_TNo_ChDs"){yvar = fYMemoD_TNo_ChDs;}
12165  if( HistoCode == "D_MCs_ChNb"){yvar = fYMemoD_MCs_ChNb;}
12166  if( HistoCode == "D_MCs_ChDs"){yvar = fYMemoD_MCs_ChDs;}
12167  if( HistoCode == "D_LFN_ChNb"){yvar = fYMemoD_LFN_ChNb;}
12168  if( HistoCode == "D_LFN_ChDs"){yvar = fYMemoD_LFN_ChDs;}
12169  if( HistoCode == "D_HFN_ChNb"){yvar = fYMemoD_HFN_ChNb;}
12170  if( HistoCode == "D_HFN_ChDs"){yvar = fYMemoD_HFN_ChDs;}
12171  if( HistoCode == "D_SCs_ChNb"){yvar = fYMemoD_SCs_ChNb;}
12172  if( HistoCode == "D_SCs_ChDs"){yvar = fYMemoD_SCs_ChDs;}
12173  if( HistoCode == "D_MSp_SpNb"){yvar = fYMemoD_MSp_SpNb;}
12174  if( HistoCode == "D_MSp_SpDs"){yvar = fYMemoD_MSp_SpDs;}
12175  if( HistoCode == "D_SSp_SpNb"){yvar = fYMemoD_SSp_SpNb;}
12176  if( HistoCode == "D_SSp_SpDs"){yvar = fYMemoD_SSp_SpDs;}
12177  if( HistoCode == "D_Adc_EvNb"){yvar = fYMemoD_Adc_EvNb;}
12178  if( HistoCode == "D_Adc_EvDs"){yvar = fYMemoD_Adc_EvDs;}
12179  if( HistoCode == "H_Ped_Date"){yvar = fYMemoH_Ped_Date;}
12180  if( HistoCode == "H_TNo_Date"){yvar = fYMemoH_TNo_Date;}
12181  if( HistoCode == "H_MCs_Date"){yvar = fYMemoH_MCs_Date;}
12182  if( HistoCode == "H_LFN_Date"){yvar = fYMemoH_LFN_Date;}
12183  if( HistoCode == "H_HFN_Date"){yvar = fYMemoH_HFN_Date;}
12184  if( HistoCode == "H_SCs_Date"){yvar = fYMemoH_SCs_Date;}
12185  if( HistoCode == "H_Ped_RuDs"){yvar = fYMemoH_Ped_RuDs;}
12186  if( HistoCode == "H_TNo_RuDs"){yvar = fYMemoH_TNo_RuDs;}
12187  if( HistoCode == "H_MCs_RuDs"){yvar = fYMemoH_MCs_RuDs;}
12188  if( HistoCode == "H_LFN_RuDs"){yvar = fYMemoH_LFN_RuDs;}
12189  if( HistoCode == "H_HFN_RuDs"){yvar = fYMemoH_HFN_RuDs;}
12190  if( HistoCode == "H_SCs_RuDs"){yvar = fYMemoH_SCs_RuDs;}
12191  }
12192  return yvar;
12193 }// end of GetYVarFromMemo(...)
12194 
12195 void TEcnaHistos::SetNbBinsMemo(const TString& HistoCode, const TString& opt_plot, const Int_t& nb_bins)
12196 {
12197 
12198  if( opt_plot == fSameOnePlot ){fNbBinsMemoH1SamePlus = nb_bins;}
12199 
12200  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12201  {
12202  if( HistoCode == "D_NOE_ChNb"){fNbBinsMemoD_NOE_ChNb = nb_bins;}
12203  if( HistoCode == "D_NOE_ChDs"){fNbBinsMemoD_NOE_ChDs = nb_bins;}
12204  if( HistoCode == "D_Ped_ChNb"){fNbBinsMemoD_Ped_ChNb = nb_bins;}
12205  if( HistoCode == "D_Ped_ChDs"){fNbBinsMemoD_Ped_ChDs = nb_bins;}
12206  if( HistoCode == "D_TNo_ChNb"){fNbBinsMemoD_TNo_ChNb = nb_bins;}
12207  if( HistoCode == "D_TNo_ChDs"){fNbBinsMemoD_TNo_ChDs = nb_bins;}
12208  if( HistoCode == "D_MCs_ChNb"){fNbBinsMemoD_MCs_ChNb = nb_bins;}
12209  if( HistoCode == "D_MCs_ChDs"){fNbBinsMemoD_MCs_ChDs = nb_bins;}
12210  if( HistoCode == "D_LFN_ChNb"){fNbBinsMemoD_LFN_ChNb = nb_bins;}
12211  if( HistoCode == "D_LFN_ChDs"){fNbBinsMemoD_LFN_ChDs = nb_bins;}
12212  if( HistoCode == "D_HFN_ChNb"){fNbBinsMemoD_HFN_ChNb = nb_bins;}
12213  if( HistoCode == "D_HFN_ChDs"){fNbBinsMemoD_HFN_ChDs = nb_bins;}
12214  if( HistoCode == "D_SCs_ChNb"){fNbBinsMemoD_SCs_ChNb = nb_bins;}
12215  if( HistoCode == "D_SCs_ChDs"){fNbBinsMemoD_SCs_ChDs = nb_bins;}
12216  if( HistoCode == "D_MSp_SpNb"){fNbBinsMemoD_MSp_SpNb = nb_bins;}
12217  if( HistoCode == "D_MSp_SpDs"){fNbBinsMemoD_MSp_SpDs = nb_bins;}
12218  if( HistoCode == "D_SSp_SpNb"){fNbBinsMemoD_SSp_SpNb = nb_bins;}
12219  if( HistoCode == "D_SSp_SpDs"){fNbBinsMemoD_SSp_SpDs = nb_bins;}
12220  if( HistoCode == "D_Adc_EvNb"){fNbBinsMemoD_Adc_EvNb = nb_bins;}
12221  if( HistoCode == "D_Adc_EvDs"){fNbBinsMemoD_Adc_EvDs = nb_bins;}
12222  if( HistoCode == "H_Ped_Date"){fNbBinsMemoH_Ped_Date = nb_bins;}
12223  if( HistoCode == "H_TNo_Date"){fNbBinsMemoH_TNo_Date = nb_bins;}
12224  if( HistoCode == "H_MCs_Date"){fNbBinsMemoH_MCs_Date = nb_bins;}
12225  if( HistoCode == "H_LFN_Date"){fNbBinsMemoH_LFN_Date = nb_bins;}
12226  if( HistoCode == "H_HFN_Date"){fNbBinsMemoH_HFN_Date = nb_bins;}
12227  if( HistoCode == "H_SCs_Date"){fNbBinsMemoH_SCs_Date = nb_bins;}
12228  if( HistoCode == "H_Ped_RuDs"){fNbBinsMemoH_Ped_RuDs = nb_bins;}
12229  if( HistoCode == "H_TNo_RuDs"){fNbBinsMemoH_TNo_RuDs = nb_bins;}
12230  if( HistoCode == "H_MCs_RuDs"){fNbBinsMemoH_MCs_RuDs = nb_bins;}
12231  if( HistoCode == "H_LFN_RuDs"){fNbBinsMemoH_LFN_RuDs = nb_bins;}
12232  if( HistoCode == "H_HFN_RuDs"){fNbBinsMemoH_HFN_RuDs = nb_bins;}
12233  if( HistoCode == "H_SCs_RuDs"){fNbBinsMemoH_SCs_RuDs = nb_bins;}
12234  }
12235 }// end of SetNbBinsMemo(...)
12236 
12237 Int_t TEcnaHistos::GetNbBinsFromMemo(const TString& HistoCode, const TString& opt_plot)
12238 {
12239  Int_t nb_bins = 0;
12240 
12241  if( opt_plot == fSameOnePlot ){nb_bins = fNbBinsMemoH1SamePlus;}
12242 
12243  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12244  {
12245  if( HistoCode == "D_NOE_ChNb"){nb_bins = fNbBinsMemoD_NOE_ChNb;}
12246  if( HistoCode == "D_NOE_ChDs"){nb_bins = fNbBinsMemoD_NOE_ChDs;}
12247  if( HistoCode == "D_Ped_ChNb"){nb_bins = fNbBinsMemoD_Ped_ChNb;}
12248  if( HistoCode == "D_Ped_ChDs"){nb_bins = fNbBinsMemoD_Ped_ChDs;}
12249  if( HistoCode == "D_TNo_ChNb"){nb_bins = fNbBinsMemoD_TNo_ChNb;}
12250  if( HistoCode == "D_TNo_ChDs"){nb_bins = fNbBinsMemoD_TNo_ChDs;}
12251  if( HistoCode == "D_MCs_ChNb"){nb_bins = fNbBinsMemoD_MCs_ChNb;}
12252  if( HistoCode == "D_MCs_ChDs"){nb_bins = fNbBinsMemoD_MCs_ChDs;}
12253  if( HistoCode == "D_LFN_ChNb"){nb_bins = fNbBinsMemoD_LFN_ChNb;}
12254  if( HistoCode == "D_LFN_ChDs"){nb_bins = fNbBinsMemoD_LFN_ChDs;}
12255  if( HistoCode == "D_HFN_ChNb"){nb_bins = fNbBinsMemoD_HFN_ChNb;}
12256  if( HistoCode == "D_HFN_ChDs"){nb_bins = fNbBinsMemoD_HFN_ChDs;}
12257  if( HistoCode == "D_SCs_ChNb"){nb_bins = fNbBinsMemoD_SCs_ChNb;}
12258  if( HistoCode == "D_SCs_ChDs"){nb_bins = fNbBinsMemoD_SCs_ChDs;}
12259  if( HistoCode == "D_MSp_SpNb"){nb_bins = fNbBinsMemoD_MSp_SpNb;}
12260  if( HistoCode == "D_MSp_SpDs"){nb_bins = fNbBinsMemoD_MSp_SpDs;}
12261  if( HistoCode == "D_SSp_SpNb"){nb_bins = fNbBinsMemoD_SSp_SpNb;}
12262  if( HistoCode == "D_SSp_SpDs"){nb_bins = fNbBinsMemoD_SSp_SpDs;}
12263  if( HistoCode == "D_Adc_EvNb"){nb_bins = fNbBinsMemoD_Adc_EvNb;}
12264  if( HistoCode == "D_Adc_EvDs"){nb_bins = fNbBinsMemoD_Adc_EvDs;}
12265  if( HistoCode == "H_Ped_Date"){nb_bins = fNbBinsMemoH_Ped_Date;}
12266  if( HistoCode == "H_TNo_Date"){nb_bins = fNbBinsMemoH_TNo_Date;}
12267  if( HistoCode == "H_MCs_Date"){nb_bins = fNbBinsMemoH_MCs_Date;}
12268  if( HistoCode == "H_LFN_Date"){nb_bins = fNbBinsMemoH_LFN_Date;}
12269  if( HistoCode == "H_HFN_Date"){nb_bins = fNbBinsMemoH_HFN_Date;}
12270  if( HistoCode == "H_SCs_Date"){nb_bins = fNbBinsMemoH_SCs_Date;}
12271  if( HistoCode == "H_Ped_RuDs"){nb_bins = fNbBinsMemoH_Ped_RuDs;}
12272  if( HistoCode == "H_TNo_RuDs"){nb_bins = fNbBinsMemoH_TNo_RuDs;}
12273  if( HistoCode == "H_MCs_RuDs"){nb_bins = fNbBinsMemoH_MCs_RuDs;}
12274  if( HistoCode == "H_LFN_RuDs"){nb_bins = fNbBinsMemoH_LFN_RuDs;}
12275  if( HistoCode == "H_HFN_RuDs"){nb_bins = fNbBinsMemoH_HFN_RuDs;}
12276  if( HistoCode == "H_SCs_RuDs"){nb_bins = fNbBinsMemoH_SCs_RuDs;}
12277  }
12278  return nb_bins;
12279 }// end of GetNbBinsFromMemo(...)
12280 
12281 TString TEcnaHistos::GetMemoFlag(const TString& opt_plot)
12282 {
12283  TString memo_flag;
12284  Int_t MaxCar = fgMaxCar;
12285  memo_flag.Resize(MaxCar);
12286  memo_flag = "(no memo_flag info)";
12287 
12288  Int_t memo_flag_number = -1;
12289 
12290  if( opt_plot == fSameOnePlot ){memo_flag_number = fMemoPlotH1SamePlus;}
12291 
12292  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12293  {
12294  memo_flag_number = fMemoPlotD_TNo_ChDs+fMemoPlotD_MCs_ChDs
12296  }
12297 
12298  if(memo_flag_number == 0){memo_flag = "Free";}
12299  if(memo_flag_number >= 1){memo_flag = "Busy";}
12300 
12301  return memo_flag;
12302 }
12303 
12304 TString TEcnaHistos::GetMemoFlag(const TString& HistoCode, const TString& opt_plot)
12305 {
12306 // Get Memo Flag
12307 
12308  TString memo_flag;
12309  Int_t MaxCar = fgMaxCar;
12310  memo_flag.Resize(MaxCar);
12311  memo_flag = "(no memo_flag info)";
12312 
12313  Int_t memo_flag_number = -1;
12314 
12315  if( opt_plot == fSameOnePlot ){memo_flag_number = fMemoPlotH1SamePlus;}
12316 
12317  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12318  {
12319  if(HistoCode == "D_NOE_ChNb"){memo_flag_number = fMemoPlotD_NOE_ChNb;}
12320  if(HistoCode == "D_NOE_ChDs"){memo_flag_number = fMemoPlotD_NOE_ChDs;}
12321  if(HistoCode == "D_Ped_ChNb"){memo_flag_number = fMemoPlotD_Ped_ChNb;}
12322  if(HistoCode == "D_Ped_ChDs"){memo_flag_number = fMemoPlotD_Ped_ChDs;}
12323  if(HistoCode == "D_TNo_ChNb"){memo_flag_number = fMemoPlotD_TNo_ChNb;}
12324  if(HistoCode == "D_TNo_ChDs"){memo_flag_number = fMemoPlotD_TNo_ChDs;}
12325  if(HistoCode == "D_MCs_ChNb"){memo_flag_number = fMemoPlotD_MCs_ChNb;}
12326  if(HistoCode == "D_MCs_ChDs"){memo_flag_number = fMemoPlotD_MCs_ChDs;}
12327  if(HistoCode == "D_LFN_ChNb"){memo_flag_number = fMemoPlotD_LFN_ChNb;}
12328  if(HistoCode == "D_LFN_ChDs"){memo_flag_number = fMemoPlotD_LFN_ChDs;}
12329  if(HistoCode == "D_HFN_ChNb"){memo_flag_number = fMemoPlotD_HFN_ChNb;}
12330  if(HistoCode == "D_HFN_ChDs"){memo_flag_number = fMemoPlotD_HFN_ChDs;}
12331  if(HistoCode == "D_SCs_ChNb"){memo_flag_number = fMemoPlotD_SCs_ChNb;}
12332  if(HistoCode == "D_SCs_ChDs"){memo_flag_number = fMemoPlotD_SCs_ChDs;}
12333  if(HistoCode == "D_MSp_SpNb"){memo_flag_number = fMemoPlotD_MSp_SpNb;}
12334  if(HistoCode == "D_MSp_SpDs"){memo_flag_number = fMemoPlotD_MSp_SpDs;}
12335  if(HistoCode == "D_SSp_SpNb"){memo_flag_number = fMemoPlotD_SSp_SpNb;}
12336  if(HistoCode == "D_SSp_SpDs"){memo_flag_number = fMemoPlotD_SSp_SpDs;}
12337  if(HistoCode == "D_Adc_EvNb"){memo_flag_number = fMemoPlotD_Adc_EvNb;}
12338  if(HistoCode == "D_Adc_EvDs"){memo_flag_number = fMemoPlotD_Adc_EvDs;}
12339  if(HistoCode == "H_Ped_Date"){memo_flag_number = fMemoPlotH_Ped_Date;}
12340  if(HistoCode == "H_TNo_Date"){memo_flag_number = fMemoPlotH_TNo_Date;}
12341  if(HistoCode == "H_MCs_Date"){memo_flag_number = fMemoPlotH_MCs_Date;}
12342  if(HistoCode == "H_LFN_Date"){memo_flag_number = fMemoPlotH_LFN_Date;}
12343  if(HistoCode == "H_HFN_Date"){memo_flag_number = fMemoPlotH_HFN_Date;}
12344  if(HistoCode == "H_SCs_Date"){memo_flag_number = fMemoPlotH_SCs_Date;}
12345  if(HistoCode == "H_Ped_RuDs"){memo_flag_number = fMemoPlotH_Ped_RuDs;}
12346  if(HistoCode == "H_TNo_RuDs"){memo_flag_number = fMemoPlotH_TNo_RuDs;}
12347  if(HistoCode == "H_MCs_RuDs"){memo_flag_number = fMemoPlotH_MCs_RuDs;}
12348  if(HistoCode == "H_LFN_RuDs"){memo_flag_number = fMemoPlotH_LFN_RuDs;}
12349  if(HistoCode == "H_HFN_RuDs"){memo_flag_number = fMemoPlotH_HFN_RuDs;}
12350  if(HistoCode == "H_SCs_RuDs"){memo_flag_number = fMemoPlotH_SCs_RuDs;}
12351  }
12352 
12353  if(memo_flag_number == 0){memo_flag = "Free";}
12354  if(memo_flag_number == 1){memo_flag = "Busy";}
12355 
12356  return memo_flag;
12357 }
12358 
12359 TCanvas* TEcnaHistos::CreateCanvas(const TString& HistoCode, const TString& opt_plot, const TString& canvas_name,
12360  UInt_t canv_w, UInt_t canv_h)
12361 {
12362 // Create canvas according to HistoCode
12363 
12364  TCanvas* main_canvas = 0;
12365 
12366  if( opt_plot == fSameOnePlot )
12367  {
12368  fCanvH1SamePlus = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12369  main_canvas = fCanvH1SamePlus;
12370  }
12371  if( opt_plot == fSeveralPlot || opt_plot == fOnlyOnePlot )
12372  {
12373  if(HistoCode == "D_NOE_ChNb"){
12374  fCanvD_NOE_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12375  main_canvas = fCanvD_NOE_ChNb;}
12376  if(HistoCode == "D_NOE_ChDs"){
12377  fCanvD_NOE_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12378  main_canvas = fCanvD_NOE_ChDs;}
12379  if(HistoCode == "D_Ped_ChNb"){
12380  fCanvD_Ped_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12381  main_canvas = fCanvD_Ped_ChNb;}
12382  if(HistoCode == "D_Ped_ChDs"){
12383  fCanvD_Ped_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12384  main_canvas = fCanvD_Ped_ChDs;}
12385  if(HistoCode == "D_TNo_ChNb"){
12386  fCanvD_TNo_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12387  main_canvas = fCanvD_TNo_ChNb;}
12388  if(HistoCode == "D_TNo_ChDs"){
12389  fCanvD_TNo_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12390  main_canvas = fCanvD_TNo_ChDs;}
12391  if(HistoCode == "D_MCs_ChNb"){
12392  fCanvD_MCs_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12393  main_canvas = fCanvD_MCs_ChNb;}
12394  if(HistoCode == "D_MCs_ChDs"){
12395  fCanvD_MCs_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12396  main_canvas = fCanvD_MCs_ChDs;}
12397  if(HistoCode == "D_LFN_ChNb"){
12398  fCanvD_LFN_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12399  main_canvas = fCanvD_LFN_ChNb;}
12400  if(HistoCode == "D_LFN_ChDs"){
12401  fCanvD_LFN_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12402  main_canvas = fCanvD_LFN_ChDs;}
12403  if(HistoCode == "D_HFN_ChNb"){
12404  fCanvD_HFN_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12405  main_canvas = fCanvD_HFN_ChNb;}
12406  if(HistoCode == "D_HFN_ChDs"){
12407  fCanvD_HFN_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12408  main_canvas = fCanvD_HFN_ChDs;}
12409  if(HistoCode == "D_SCs_ChNb"){
12410  fCanvD_SCs_ChNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12411  main_canvas = fCanvD_SCs_ChNb;}
12412  if(HistoCode == "D_SCs_ChDs"){
12413  fCanvD_SCs_ChDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12414  main_canvas = fCanvD_SCs_ChDs;}
12415 
12416  if(HistoCode == "D_MSp_SpNb" ){
12417  fCanvD_MSp_SpNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12418  main_canvas = fCanvD_MSp_SpNb;}
12419  if(HistoCode == "D_MSp_SpDs" ){
12420  fCanvD_MSp_SpDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12421  main_canvas = fCanvD_MSp_SpDs;}
12422  if(HistoCode =="D_SSp_SpNb" ){
12423  fCanvD_SSp_SpNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12424  main_canvas = fCanvD_SSp_SpNb;}
12425  if(HistoCode =="D_SSp_SpDs" ){
12426  fCanvD_SSp_SpDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12427  main_canvas = fCanvD_SSp_SpDs;}
12428 
12429  if(HistoCode == "D_Adc_EvNb"){
12430  fCanvD_Adc_EvNb = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12431  main_canvas = fCanvD_Adc_EvNb;}
12432  if(HistoCode == "D_Adc_EvDs"){
12433  fCanvD_Adc_EvDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12434  main_canvas = fCanvD_Adc_EvDs;}
12435 
12436  if(HistoCode == "H_Ped_Date"){
12437  fCanvH_Ped_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12438  main_canvas = fCanvH_Ped_Date;}
12439  if(HistoCode == "H_TNo_Date"){
12440  fCanvH_TNo_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12441  main_canvas = fCanvH_TNo_Date;}
12442  if(HistoCode == "H_MCs_Date"){
12443  fCanvH_MCs_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12444  main_canvas = fCanvH_MCs_Date;}
12445  if(HistoCode == "H_LFN_Date"){
12446  fCanvH_LFN_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12447  main_canvas = fCanvH_LFN_Date;}
12448  if(HistoCode == "H_HFN_Date"){
12449  fCanvH_HFN_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12450  main_canvas = fCanvH_HFN_Date;}
12451  if(HistoCode == "H_SCs_Date"){
12452  fCanvH_SCs_Date = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12453  main_canvas = fCanvH_SCs_Date;}
12454 
12455  if(HistoCode == "H_Ped_RuDs"){
12456  fCanvH_Ped_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12457  main_canvas = fCanvH_Ped_RuDs;}
12458  if(HistoCode == "H_TNo_RuDs"){
12459  fCanvH_TNo_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12460  main_canvas = fCanvH_TNo_RuDs;}
12461  if(HistoCode == "H_MCs_RuDs"){
12462  fCanvH_MCs_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12463  main_canvas = fCanvH_MCs_RuDs;}
12464  if(HistoCode == "H_LFN_RuDs"){
12465  fCanvH_LFN_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12466  main_canvas = fCanvH_LFN_RuDs;}
12467  if(HistoCode == "H_HFN_RuDs"){
12468  fCanvH_HFN_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12469  main_canvas = fCanvH_HFN_RuDs;}
12470  if(HistoCode == "H_SCs_RuDs"){
12471  fCanvH_SCs_RuDs = new TCanvas(canvas_name.Data(), canvas_name.Data(), canv_w, canv_h); fCnewRoot++;
12472  main_canvas = fCanvH_SCs_RuDs;}
12473 
12474  }
12475  return main_canvas;
12476 }
12477 // end of CreateCanvas
12478 
12479 void TEcnaHistos::SetParametersCanvas(const TString& HistoCode, const TString& opt_plot)
12480 {
12481 // Set parameters canvas according to HistoCode
12482 
12483  Double_t x_margin_factor = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
12484  Double_t y_margin_factor = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
12485 
12486  if( opt_plot == fSameOnePlot )
12487  {
12488  fImpH1SamePlus = (TCanvasImp*)fCanvH1SamePlus->GetCanvasImp();
12489  fCanvH1SamePlus->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12490  fPadH1SamePlus = gPad; fClosedH1SamePlus = kFALSE;
12492  }
12493 
12494  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12495  {
12496  if(HistoCode == "D_NOE_ChNb")
12497  {
12498  fImpD_NOE_ChNb = (TCanvasImp*)fCanvD_NOE_ChNb->GetCanvasImp();
12499  fCanvD_NOE_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12500  fPadD_NOE_ChNb = gPad; fClosedD_NOE_ChNb = kFALSE;
12502  }
12503 
12504  if(HistoCode == "D_NOE_ChDs") // (SetParametersCanvas)
12505  {
12506  fImpD_NOE_ChDs = (TCanvasImp*)fCanvD_NOE_ChDs->GetCanvasImp();
12507  fCanvD_NOE_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12508  fPadD_NOE_ChDs = gPad; fClosedD_NOE_ChDs = kFALSE;
12510  }
12511 
12512  if(HistoCode == "D_Ped_ChNb")
12513  {
12514  fImpD_Ped_ChNb = (TCanvasImp*)fCanvD_Ped_ChNb->GetCanvasImp();
12515  fCanvD_Ped_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12516  fPadD_Ped_ChNb = gPad; fClosedD_Ped_ChNb = kFALSE;
12518  }
12519 
12520  if(HistoCode == "D_Ped_ChDs")
12521  {
12522  fImpD_Ped_ChDs = (TCanvasImp*)fCanvD_Ped_ChDs->GetCanvasImp();
12523  fCanvD_Ped_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12524  fPadD_Ped_ChDs = gPad; fClosedD_Ped_ChDs = kFALSE;
12526  }
12527 
12528  if(HistoCode == "D_TNo_ChNb")
12529  {
12530  fImpD_TNo_ChNb = (TCanvasImp*)fCanvD_TNo_ChNb->GetCanvasImp();
12531  fCanvD_TNo_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12532  fPadD_TNo_ChNb = gPad; fClosedD_TNo_ChNb = kFALSE;
12534  }
12535 
12536  if(HistoCode == "D_TNo_ChDs") // (SetParametersCanvas)
12537  {
12538  fImpD_TNo_ChDs = (TCanvasImp*)fCanvD_TNo_ChDs->GetCanvasImp();
12539  fCanvD_TNo_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12540  fPadD_TNo_ChDs = gPad; fClosedD_TNo_ChDs = kFALSE;
12542  }
12543 
12544  if(HistoCode == "D_MCs_ChNb")
12545  {
12546  fImpD_MCs_ChNb = (TCanvasImp*)fCanvD_MCs_ChNb->GetCanvasImp();
12547  fCanvD_MCs_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12548  fPadD_MCs_ChNb = gPad; fClosedD_MCs_ChNb = kFALSE;
12550  }
12551 
12552  if(HistoCode == "D_MCs_ChDs")
12553  {
12554  fImpD_MCs_ChDs = (TCanvasImp*)fCanvD_MCs_ChDs->GetCanvasImp();
12555  fCanvD_MCs_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12556  fPadD_MCs_ChDs = gPad; fClosedD_MCs_ChDs = kFALSE;
12558  }
12559 
12560  if(HistoCode == "D_LFN_ChNb") // (SetParametersCanvas)
12561  {
12562  fImpD_LFN_ChNb = (TCanvasImp*)fCanvD_LFN_ChNb->GetCanvasImp();
12563  fCanvD_LFN_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12564  fPadD_LFN_ChNb = gPad; fClosedD_LFN_ChNb = kFALSE;
12566  }
12567 
12568  if(HistoCode == "D_LFN_ChDs")
12569  {
12570  fImpD_LFN_ChDs = (TCanvasImp*)fCanvD_LFN_ChDs->GetCanvasImp();
12571  fCanvD_LFN_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12572  fPadD_LFN_ChDs = gPad; fClosedD_LFN_ChDs = kFALSE;
12574  }
12575 
12576  if(HistoCode == "D_HFN_ChNb")
12577  {
12578  fImpD_HFN_ChNb = (TCanvasImp*)fCanvD_HFN_ChNb->GetCanvasImp();
12579  fCanvD_HFN_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12580  fPadD_HFN_ChNb = gPad; fClosedD_HFN_ChNb = kFALSE;
12582  }
12583 
12584  if(HistoCode == "D_HFN_ChDs")
12585  {
12586  fImpD_HFN_ChDs = (TCanvasImp*)fCanvD_HFN_ChDs->GetCanvasImp();
12587  fCanvD_HFN_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12588  fPadD_HFN_ChDs = gPad; fClosedD_HFN_ChDs = kFALSE;
12590  }
12591 
12592  if(HistoCode == "D_SCs_ChNb") // (SetParametersCanvas)
12593  {
12594  fImpD_SCs_ChNb = (TCanvasImp*)fCanvD_SCs_ChNb->GetCanvasImp();
12595  fCanvD_SCs_ChNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12596  fPadD_SCs_ChNb = gPad; fClosedD_SCs_ChNb = kFALSE;
12598  }
12599 
12600  if(HistoCode == "D_SCs_ChDs")
12601  {
12602  fImpD_SCs_ChDs = (TCanvasImp*)fCanvD_SCs_ChDs->GetCanvasImp();
12603  fCanvD_SCs_ChDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12604  fPadD_SCs_ChDs = gPad; fClosedD_SCs_ChDs = kFALSE;
12606  }
12607 
12608  if(HistoCode == "D_MSp_SpNb")
12609  {
12610  fImpD_MSp_SpNb = (TCanvasImp*)fCanvD_MSp_SpNb->GetCanvasImp();
12611  fCanvD_MSp_SpNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12612  fPadD_MSp_SpNb = gPad; fClosedD_MSp_SpNb = kFALSE;
12614  }
12615 
12616  if(HistoCode == "D_MSp_SpDs")
12617  {
12618  fImpD_MSp_SpDs = (TCanvasImp*)fCanvD_MSp_SpDs->GetCanvasImp();
12619  fCanvD_MSp_SpDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12620  fPadD_MSp_SpDs = gPad; fClosedD_MSp_SpDs = kFALSE;
12622  }
12623 
12624  if(HistoCode == "D_SSp_SpNb") // (SetParametersCanvas)
12625  {
12626  fImpD_SSp_SpNb = (TCanvasImp*)fCanvD_SSp_SpNb->GetCanvasImp();
12627  fCanvD_SSp_SpNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12628  fPadD_SSp_SpNb = gPad; fClosedD_SSp_SpNb = kFALSE;
12630  }
12631 
12632  if(HistoCode == "D_SSp_SpDs") // (SetParametersCanvas)
12633  {
12634  fImpD_SSp_SpDs = (TCanvasImp*)fCanvD_SSp_SpDs->GetCanvasImp();
12635  fCanvD_SSp_SpDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12636  fPadD_SSp_SpDs = gPad; fClosedD_SSp_SpDs = kFALSE;
12638  }
12639 
12640  if(HistoCode == "D_Adc_EvDs")
12641  {
12642  fImpD_Adc_EvDs = (TCanvasImp*)fCanvD_Adc_EvDs->GetCanvasImp();
12643  fCanvD_Adc_EvDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12644  fPadD_Adc_EvDs = gPad; fClosedD_Adc_EvDs = kFALSE;
12646  }
12647 
12648  if(HistoCode == "D_Adc_EvNb")
12649  {
12650  fImpD_Adc_EvNb = (TCanvasImp*)fCanvD_Adc_EvNb->GetCanvasImp();
12651  fCanvD_Adc_EvNb->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12652  fPadD_Adc_EvNb = gPad; fClosedD_Adc_EvNb = kFALSE;
12654  }
12655 
12656  if(HistoCode == "H_Ped_Date") // (SetParametersCanvas)
12657  {
12658  fImpH_Ped_Date = (TCanvasImp*)fCanvH_Ped_Date->GetCanvasImp();
12659  fCanvH_Ped_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12660  fPadH_Ped_Date = gPad; fClosedH_Ped_Date = kFALSE;
12662  }
12663  if(HistoCode == "H_TNo_Date")
12664  {
12665  fImpH_TNo_Date = (TCanvasImp*)fCanvH_TNo_Date->GetCanvasImp();
12666  fCanvH_TNo_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12667  fPadH_TNo_Date = gPad; fClosedH_TNo_Date = kFALSE;
12669  }
12670  if(HistoCode == "H_MCs_Date")
12671  {
12672  fImpH_MCs_Date = (TCanvasImp*)fCanvH_MCs_Date->GetCanvasImp();
12673  fCanvH_MCs_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12674  fPadH_MCs_Date = gPad; fClosedH_MCs_Date = kFALSE;
12676  }
12677 
12678  if(HistoCode == "H_LFN_Date") // (SetParametersCanvas)
12679  {
12680  fImpH_LFN_Date = (TCanvasImp*)fCanvH_LFN_Date->GetCanvasImp();
12681  fCanvH_LFN_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12682  fPadH_LFN_Date = gPad; fClosedH_LFN_Date = kFALSE;
12684  }
12685  if(HistoCode == "H_HFN_Date")
12686  {
12687  fImpH_HFN_Date = (TCanvasImp*)fCanvH_HFN_Date->GetCanvasImp();
12688  fCanvH_HFN_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12689  fPadH_HFN_Date = gPad; fClosedH_HFN_Date = kFALSE;
12691  }
12692  if(HistoCode == "H_SCs_Date")
12693  {
12694  fImpH_SCs_Date = (TCanvasImp*)fCanvH_SCs_Date->GetCanvasImp();
12695  fCanvH_SCs_Date->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12696  fPadH_SCs_Date = gPad; fClosedH_SCs_Date = kFALSE;
12698  }
12699 
12700  if(HistoCode == "H_Ped_RuDs") // (SetParametersCanvas)
12701  {
12702  fImpH_Ped_RuDs = (TCanvasImp*)fCanvH_Ped_RuDs->GetCanvasImp();
12703  fCanvH_Ped_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12704  fPadH_Ped_RuDs = gPad; fClosedH_Ped_RuDs = kFALSE;
12706  }
12707  if(HistoCode == "H_TNo_RuDs")
12708  {
12709  fImpH_TNo_RuDs = (TCanvasImp*)fCanvH_TNo_RuDs->GetCanvasImp();
12710  fCanvH_TNo_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12711  fPadH_TNo_RuDs = gPad; fClosedH_TNo_RuDs = kFALSE;
12713  }
12714  if(HistoCode == "H_MCs_RuDs")
12715  {
12716  fImpH_MCs_RuDs = (TCanvasImp*)fCanvH_MCs_RuDs->GetCanvasImp();
12717  fCanvH_MCs_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12718  fPadH_MCs_RuDs = gPad; fClosedH_MCs_RuDs = kFALSE;
12720  }
12721 
12722  if(HistoCode == "H_LFN_RuDs") // (SetParametersCanvas)
12723  {
12724  fImpH_LFN_RuDs = (TCanvasImp*)fCanvH_LFN_RuDs->GetCanvasImp();
12725  fCanvH_LFN_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12726  fPadH_LFN_RuDs = gPad; fClosedH_LFN_RuDs = kFALSE;
12728  }
12729  if(HistoCode == "H_HFN_RuDs")
12730  {
12731  fImpH_HFN_RuDs = (TCanvasImp*)fCanvH_HFN_RuDs->GetCanvasImp();
12732  fCanvH_HFN_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12733  fPadH_HFN_RuDs = gPad; fClosedH_HFN_RuDs = kFALSE;
12735  }
12736  if(HistoCode == "H_SCs_RuDs")
12737  {
12738  fImpH_SCs_RuDs = (TCanvasImp*)fCanvH_SCs_RuDs->GetCanvasImp();
12739  fCanvH_SCs_RuDs->Divide(1, 1, x_margin_factor , y_margin_factor); gPad->cd(1);
12740  fPadH_SCs_RuDs = gPad; fClosedH_SCs_RuDs = kFALSE;
12742  }
12743  }
12744 }
12745 // end of SetParametersCanvas
12746 
12747 TCanvas* TEcnaHistos::GetCurrentCanvas(const TString& HistoCode, const TString& opt_plot)
12748 {
12749  TCanvas* main_canvas = 0;
12750 
12751  if( opt_plot == fSameOnePlot ){main_canvas = fCanvH1SamePlus;}
12752 
12753  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
12754  {
12755  if(HistoCode == "D_NOE_ChNb"){main_canvas = fCanvD_NOE_ChNb;}
12756  if(HistoCode == "D_NOE_ChDs"){main_canvas = fCanvD_NOE_ChDs;}
12757  if(HistoCode == "D_Ped_ChNb"){main_canvas = fCanvD_Ped_ChNb;}
12758  if(HistoCode == "D_Ped_ChDs"){main_canvas = fCanvD_Ped_ChDs;}
12759  if(HistoCode == "D_TNo_ChNb"){main_canvas = fCanvD_TNo_ChNb;}
12760  if(HistoCode == "D_TNo_ChDs"){main_canvas = fCanvD_TNo_ChDs;}
12761  if(HistoCode == "D_MCs_ChNb"){main_canvas = fCanvD_MCs_ChNb;}
12762  if(HistoCode == "D_MCs_ChDs"){main_canvas = fCanvD_MCs_ChDs;}
12763  if(HistoCode == "D_LFN_ChNb"){main_canvas = fCanvD_LFN_ChNb;}
12764  if(HistoCode == "D_LFN_ChDs"){main_canvas = fCanvD_LFN_ChDs;}
12765  if(HistoCode == "D_HFN_ChNb"){main_canvas = fCanvD_HFN_ChNb;}
12766  if(HistoCode == "D_HFN_ChDs"){main_canvas = fCanvD_HFN_ChDs;}
12767  if(HistoCode == "D_SCs_ChNb"){main_canvas = fCanvD_SCs_ChNb;}
12768  if(HistoCode == "D_SCs_ChDs"){main_canvas = fCanvD_SCs_ChDs;}
12769  if(HistoCode == "D_MSp_SpNb"){main_canvas = fCanvD_MSp_SpNb;}
12770  if(HistoCode == "D_MSp_SpDs"){main_canvas = fCanvD_MSp_SpDs;}
12771  if(HistoCode == "D_SSp_SpNb"){main_canvas = fCanvD_SSp_SpNb;}
12772  if(HistoCode == "D_SSp_SpDs"){main_canvas = fCanvD_SSp_SpDs;}
12773  if(HistoCode == "D_Adc_EvNb"){main_canvas = fCanvD_Adc_EvNb;}
12774  if(HistoCode == "D_Adc_EvDs"){main_canvas = fCanvD_Adc_EvDs;}
12775  if(HistoCode == "H_Ped_Date"){main_canvas = fCanvH_Ped_Date;}
12776  if(HistoCode == "H_TNo_Date"){main_canvas = fCanvH_TNo_Date;}
12777  if(HistoCode == "H_MCs_Date"){main_canvas = fCanvH_MCs_Date;}
12778  if(HistoCode == "H_LFN_Date"){main_canvas = fCanvH_LFN_Date;}
12779  if(HistoCode == "H_HFN_Date"){main_canvas = fCanvH_HFN_Date;}
12780  if(HistoCode == "H_SCs_Date"){main_canvas = fCanvH_SCs_Date;}
12781  if(HistoCode == "H_Ped_RuDs"){main_canvas = fCanvH_Ped_RuDs;}
12782  if(HistoCode == "H_TNo_RuDs"){main_canvas = fCanvH_TNo_RuDs;}
12783  if(HistoCode == "H_MCs_RuDs"){main_canvas = fCanvH_MCs_RuDs;}
12784  if(HistoCode == "H_LFN_RuDs"){main_canvas = fCanvH_LFN_RuDs;}
12785  if(HistoCode == "H_HFN_RuDs"){main_canvas = fCanvH_HFN_RuDs;}
12786  if(HistoCode == "H_SCs_RuDs"){main_canvas = fCanvH_SCs_RuDs;}
12787  }
12788  return main_canvas;
12789 }
12790 // end of GetCurrentCanvas(...)
12791 
12794 
12796 {
12797  if( fCurrentCanvas != 0)
12798  {
12799  if( (TCanvasImp*)fCurrentCanvas->GetCanvasImp() != 0 )
12800  {
12801  (TCanvas*)fCurrentCanvas->DrawClone();
12802  }
12803  else
12804  {
12805  cout << "TEcnaHistos::PlotCloneOfCurrentCanvas()> Last canvas has been removed. No clone can be done."
12806  << endl << " Please, display the canvas again."
12807  << fTTBELL << endl;
12808  }
12809  }
12810  else
12811  {
12812  cout << "TEcnaHistos::PlotCloneOfCurrentCanvas()> No canvas has been created. No clone can be done."
12813  << fTTBELL << endl;
12814  }
12815 }
12816 
12817 //--------------------------------------------------------------------------------------------
12818 TVirtualPad* TEcnaHistos::ActivePad(const TString& HistoCode, const TString& opt_plot)
12819 {
12820 // Active Pad for Same plot option
12821 
12822  TVirtualPad* main_subpad = 0;
12823 
12824  fCurrentHistoCode = HistoCode;
12825  fCurrentOptPlot = opt_plot;
12826 
12827  if( opt_plot == fSameOnePlot )
12828  {
12829  fCanvH1SamePlus->
12830  Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12831  if( fClosedH1SamePlus == kFALSE ){main_subpad = fPadH1SamePlus;}
12832  }
12833 
12834  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
12835  {
12836  if(HistoCode == "D_NOE_ChNb"){
12837  fCanvD_NOE_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12838  if( fClosedD_NOE_ChNb == kFALSE ){main_subpad = fPadD_NOE_ChNb;}}
12839 
12840  if(HistoCode == "D_NOE_ChDs"){
12841  fCanvD_NOE_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12842  if( fClosedD_NOE_ChDs == kFALSE ){main_subpad = fPadD_NOE_ChDs;}}
12843 
12844  if(HistoCode == "D_Ped_ChNb"){
12845  fCanvD_Ped_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12846  if( fClosedD_Ped_ChNb == kFALSE ){main_subpad = fPadD_Ped_ChNb;}}
12847 
12848  if(HistoCode == "D_Ped_ChDs"){
12849  fCanvD_Ped_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12850  if( fClosedD_Ped_ChDs == kFALSE ){main_subpad = fPadD_Ped_ChDs;}}
12851 
12852  if(HistoCode == "D_TNo_ChNb"){
12853  fCanvD_TNo_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12854  if( fClosedD_TNo_ChNb == kFALSE ){main_subpad = fPadD_TNo_ChNb;}}
12855 
12856  if(HistoCode == "D_TNo_ChDs"){
12857  fCanvD_TNo_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12858  if( fClosedD_TNo_ChDs == kFALSE ){main_subpad = fPadD_TNo_ChDs;}}
12859 
12860  if(HistoCode == "D_MCs_ChNb"){
12861  fCanvD_MCs_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12862  if( fClosedD_MCs_ChNb == kFALSE ){main_subpad = fPadD_MCs_ChNb;}}
12863 
12864  if(HistoCode == "D_MCs_ChDs"){
12865  fCanvD_MCs_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12866  if( fClosedD_MCs_ChDs == kFALSE ){main_subpad = fPadD_MCs_ChDs;}}
12867 
12868  if(HistoCode == "D_LFN_ChNb"){
12869  fCanvD_LFN_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12870  if( fClosedD_LFN_ChNb == kFALSE ){main_subpad = fPadD_LFN_ChNb;}}
12871 
12872  if(HistoCode == "D_LFN_ChDs"){
12873  fCanvD_LFN_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12874  if( fClosedD_LFN_ChDs == kFALSE ){main_subpad = fPadD_LFN_ChDs;}}
12875 
12876  if(HistoCode == "D_HFN_ChNb"){
12877  fCanvD_HFN_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12878  if( fClosedD_HFN_ChNb == kFALSE ){main_subpad = fPadD_HFN_ChNb;}}
12879 
12880  if(HistoCode == "D_HFN_ChDs"){
12881  fCanvD_HFN_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12882  if( fClosedD_HFN_ChDs == kFALSE ){main_subpad = fPadD_HFN_ChDs;}}
12883 
12884  if(HistoCode == "D_SCs_ChNb"){
12885  fCanvD_SCs_ChNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12886  if( fClosedD_SCs_ChNb == kFALSE ){main_subpad = fPadD_SCs_ChNb;}}
12887 
12888  if(HistoCode == "D_SCs_ChDs"){
12889  fCanvD_SCs_ChDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12890  if( fClosedD_SCs_ChDs == kFALSE ){main_subpad = fPadD_SCs_ChDs;}}
12891 
12892  if(HistoCode == "D_MSp_SpNb"){
12893  fCanvD_MSp_SpNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12894  if( fClosedD_MSp_SpNb == kFALSE ){main_subpad = fPadD_MSp_SpNb;}}
12895 
12896  if(HistoCode == "D_MSp_SpDs"){
12897  fCanvD_MSp_SpDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12898  if( fClosedD_MSp_SpDs == kFALSE ){main_subpad = fPadD_MSp_SpDs;}}
12899 
12900  if(HistoCode == "D_SSp_SpNb"){
12901  fCanvD_SSp_SpNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12902  if( fClosedD_SSp_SpNb == kFALSE ){main_subpad = fPadD_SSp_SpNb;}}
12903 
12904  if(HistoCode == "D_SSp_SpDs"){
12905  fCanvD_SSp_SpDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12906  if( fClosedD_SSp_SpDs == kFALSE ){main_subpad = fPadD_SSp_SpDs;}}
12907 
12908  if(HistoCode == "D_Adc_EvNb"){
12909  fCanvD_Adc_EvNb->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12910  if( fClosedD_Adc_EvNb == kFALSE ){main_subpad = fPadD_Adc_EvNb;}}
12911 
12912  if(HistoCode == "D_Adc_EvDs"){
12913  fCanvD_Adc_EvDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12914  if( fClosedD_Adc_EvDs == kFALSE ){main_subpad = fPadD_Adc_EvDs;}}
12915 
12916  if(HistoCode == "H_Ped_Date"){
12917  fCanvH_Ped_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12918  if( fClosedH_Ped_Date == kFALSE ){main_subpad = fPadH_Ped_Date;}}
12919 
12920  if(HistoCode == "H_TNo_Date"){
12921  fCanvH_TNo_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12922  if( fClosedH_TNo_Date == kFALSE ){main_subpad = fPadH_TNo_Date;}}
12923 
12924  if(HistoCode == "H_MCs_Date"){
12925  fCanvH_MCs_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12926  if( fClosedH_MCs_Date == kFALSE ){main_subpad = fPadH_MCs_Date;}}
12927 
12928  if(HistoCode == "H_LFN_Date"){
12929  fCanvH_LFN_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12930  if( fClosedH_LFN_Date == kFALSE ){main_subpad = fPadH_LFN_Date;}}
12931 
12932  if(HistoCode == "H_HFN_Date"){
12933  fCanvH_HFN_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12934  if( fClosedH_HFN_Date == kFALSE ){main_subpad = fPadH_HFN_Date;}}
12935 
12936  if(HistoCode == "H_SCs_Date"){
12937  fCanvH_SCs_Date->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12938  if( fClosedH_SCs_Date == kFALSE ){main_subpad = fPadH_SCs_Date;}}
12939 
12940  if(HistoCode == "H_Ped_RuDs"){
12941  fCanvH_Ped_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12942  if( fClosedH_Ped_RuDs == kFALSE ){main_subpad = fPadH_Ped_RuDs;}}
12943 
12944  if(HistoCode == "H_TNo_RuDs"){
12945  fCanvH_TNo_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12946  if( fClosedH_TNo_RuDs == kFALSE ){main_subpad = fPadH_TNo_RuDs;}}
12947 
12948  if(HistoCode == "H_MCs_RuDs"){
12949  fCanvH_MCs_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12950  if( fClosedH_MCs_RuDs == kFALSE ){main_subpad = fPadH_MCs_RuDs;}}
12951 
12952  if(HistoCode == "H_LFN_RuDs"){
12953  fCanvH_LFN_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12954  if( fClosedH_LFN_RuDs == kFALSE ){main_subpad = fPadH_LFN_RuDs;}}
12955 
12956  if(HistoCode == "H_HFN_RuDs"){
12957  fCanvH_HFN_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12958  if( fClosedH_HFN_RuDs == kFALSE ){main_subpad = fPadH_HFN_RuDs;}}
12959 
12960  if(HistoCode == "H_SCs_RuDs"){
12961  fCanvH_SCs_RuDs->Connect("Closed()","TEcnaHistos",this,"DoCanvasClosed()");
12962  if( fClosedH_SCs_RuDs == kFALSE ){main_subpad = fPadH_SCs_RuDs;}}
12963  }
12964 
12965  if( main_subpad == 0 )
12966  {cout << "*TEcnaHistos::ActivePad(...)> main_subpad = "
12967  << main_subpad << ". This canvas has been closed." << endl;}
12968 
12969  return main_subpad;
12970 }
12971 // end of ActivePad
12972 
12974 {
12977  {
12978  if(fCurrentHistoCode == "D_NOE_ChNb"){fClosedD_NOE_ChNb = kTRUE;}
12979  if(fCurrentHistoCode == "D_NOE_ChDs"){fClosedD_NOE_ChDs = kTRUE;}
12980  if(fCurrentHistoCode == "D_Ped_ChNb"){fClosedD_Ped_ChNb = kTRUE;}
12981  if(fCurrentHistoCode == "D_Ped_ChDs"){fClosedD_Ped_ChDs = kTRUE;}
12982  if(fCurrentHistoCode == "D_TNo_ChNb"){fClosedD_TNo_ChNb = kTRUE;}
12983  if(fCurrentHistoCode == "D_TNo_ChDs"){fClosedD_TNo_ChDs = kTRUE;}
12984  if(fCurrentHistoCode == "D_MCs_ChNb"){fClosedD_MCs_ChNb = kTRUE;}
12985  if(fCurrentHistoCode == "D_MCs_ChDs"){fClosedD_MCs_ChDs = kTRUE;}
12986  if(fCurrentHistoCode == "D_LFN_ChNb"){fClosedD_LFN_ChNb = kTRUE;}
12987  if(fCurrentHistoCode == "D_LFN_ChDs"){fClosedD_LFN_ChDs = kTRUE;}
12988  if(fCurrentHistoCode == "D_HFN_ChNb"){fClosedD_HFN_ChNb = kTRUE;}
12989  if(fCurrentHistoCode == "D_HFN_ChDs"){fClosedD_HFN_ChDs = kTRUE;}
12990  if(fCurrentHistoCode == "D_SCs_ChNb"){fClosedD_SCs_ChNb = kTRUE;}
12991  if(fCurrentHistoCode == "D_SCs_ChDs"){fClosedD_SCs_ChDs = kTRUE;}
12992  if(fCurrentHistoCode == "D_MSp_SpNb"){fClosedD_MSp_SpNb = kTRUE;}
12993  if(fCurrentHistoCode == "D_MSp_SpDs"){fClosedD_MSp_SpDs = kTRUE;}
12994  if(fCurrentHistoCode == "D_SSp_SpNb"){fClosedD_SSp_SpNb = kTRUE;}
12995  if(fCurrentHistoCode == "D_SSp_SpDs"){fClosedD_SSp_SpDs = kTRUE;}
12996  if(fCurrentHistoCode == "D_Adc_EvNb"){fClosedD_Adc_EvNb = kTRUE;}
12997  if(fCurrentHistoCode == "D_Adc_EvDs"){fClosedD_Adc_EvDs = kTRUE;}
12998  if(fCurrentHistoCode == "H_Ped_Date"){fClosedH_Ped_Date = kTRUE;}
12999  if(fCurrentHistoCode == "H_TNo_Date"){fClosedH_TNo_Date = kTRUE;}
13000  if(fCurrentHistoCode == "H_MCs_Date"){fClosedH_MCs_Date = kTRUE;}
13001  if(fCurrentHistoCode == "H_LFN_Date"){fClosedH_LFN_Date = kTRUE;}
13002  if(fCurrentHistoCode == "H_HFN_Date"){fClosedH_HFN_Date = kTRUE;}
13003  if(fCurrentHistoCode == "H_SCs_Date"){fClosedH_SCs_Date = kTRUE;}
13004  if(fCurrentHistoCode == "H_Ped_RuDs"){fClosedH_Ped_RuDs = kTRUE;}
13005  if(fCurrentHistoCode == "H_TNo_RuDs"){fClosedH_TNo_RuDs = kTRUE;}
13006  if(fCurrentHistoCode == "H_MCs_RuDs"){fClosedH_MCs_RuDs = kTRUE;}
13007  if(fCurrentHistoCode == "H_LFN_RuDs"){fClosedH_LFN_RuDs = kTRUE;}
13008  if(fCurrentHistoCode == "H_HFN_RuDs"){fClosedH_HFN_RuDs = kTRUE;}
13009  if(fCurrentHistoCode == "H_SCs_RuDs"){fClosedH_SCs_RuDs = kTRUE;}
13010  }
13011 
13012  fCurrentOptPlot = "NADA"; // to avoid fClosed... = kTRUE if other canvas than those above Closed (i.e. 2D plots)
13013  fCurrentHistoCode = "NADA";
13014 
13015  cout << "!TEcnaHistos::DoCanvasClosed(...)> WARNING: canvas has been closed." << endl;
13016 }
13017 
13018 void TEcnaHistos::SetParametersPavTxt(const TString& HistoCode, const TString& opt_plot)
13019 {
13020 // Set parameters pave "sevearl changing" according to HistoCode
13021 
13023 
13024  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13025  {
13026  if(HistoCode == "D_NOE_ChNb"){fPavTxtD_NOE_ChNb = fPavComSeveralChanging;}
13027  if(HistoCode == "D_NOE_ChDs"){fPavTxtD_NOE_ChDs = fPavComSeveralChanging;}
13028  if(HistoCode == "D_Ped_ChNb"){fPavTxtD_Ped_ChNb = fPavComSeveralChanging;}
13029  if(HistoCode == "D_Ped_ChDs"){fPavTxtD_Ped_ChDs = fPavComSeveralChanging;}
13030  if(HistoCode == "D_TNo_ChNb"){fPavTxtD_TNo_ChNb = fPavComSeveralChanging;}
13031  if(HistoCode == "D_TNo_ChDs"){fPavTxtD_TNo_ChDs = fPavComSeveralChanging;}
13032  if(HistoCode == "D_MCs_ChNb"){fPavTxtD_MCs_ChNb = fPavComSeveralChanging;}
13033  if(HistoCode == "D_MCs_ChDs"){fPavTxtD_MCs_ChDs = fPavComSeveralChanging;}
13034  if(HistoCode == "D_LFN_ChNb"){fPavTxtD_LFN_ChNb = fPavComSeveralChanging;}
13035  if(HistoCode == "D_LFN_ChDs"){fPavTxtD_LFN_ChDs = fPavComSeveralChanging;}
13036  if(HistoCode == "D_HFN_ChNb"){fPavTxtD_HFN_ChNb = fPavComSeveralChanging;}
13037  if(HistoCode == "D_HFN_ChDs"){fPavTxtD_HFN_ChDs = fPavComSeveralChanging;}
13038  if(HistoCode == "D_SCs_ChNb"){fPavTxtD_SCs_ChNb = fPavComSeveralChanging;}
13039  if(HistoCode == "D_SCs_ChDs"){fPavTxtD_SCs_ChDs = fPavComSeveralChanging;}
13040  if(HistoCode == "D_MSp_SpNb"){fPavTxtD_MSp_SpNb = fPavComSeveralChanging;}
13041  if(HistoCode == "D_MSp_SpDs"){fPavTxtD_MSp_SpDs = fPavComSeveralChanging;}
13042  if(HistoCode == "D_SSp_SpNb"){fPavTxtD_SSp_SpNb = fPavComSeveralChanging;}
13043  if(HistoCode == "D_SSp_SpDs"){fPavTxtD_SSp_SpDs = fPavComSeveralChanging;}
13044  if(HistoCode == "D_Adc_EvNb"){fPavTxtD_Adc_EvNb = fPavComSeveralChanging;}
13045  if(HistoCode == "D_Adc_EvDs"){fPavTxtD_Adc_EvDs = fPavComSeveralChanging;}
13046  if(HistoCode == "H_Ped_Date"){fPavTxtH_Ped_Date = fPavComSeveralChanging;}
13047  if(HistoCode == "H_TNo_Date"){fPavTxtH_TNo_Date = fPavComSeveralChanging;}
13048  if(HistoCode == "H_MCs_Date"){fPavTxtH_MCs_Date = fPavComSeveralChanging;}
13049  if(HistoCode == "H_LFN_Date"){fPavTxtH_LFN_Date = fPavComSeveralChanging;}
13050  if(HistoCode == "H_HFN_Date"){fPavTxtH_HFN_Date = fPavComSeveralChanging;}
13051  if(HistoCode == "H_SCs_Date"){fPavTxtH_SCs_Date = fPavComSeveralChanging;}
13052  if(HistoCode == "H_Ped_RuDs"){fPavTxtH_Ped_RuDs = fPavComSeveralChanging;}
13053  if(HistoCode == "H_TNo_RuDs"){fPavTxtH_TNo_RuDs = fPavComSeveralChanging;}
13054  if(HistoCode == "H_MCs_RuDs"){fPavTxtH_MCs_RuDs = fPavComSeveralChanging;}
13055  if(HistoCode == "H_LFN_RuDs"){fPavTxtH_LFN_RuDs = fPavComSeveralChanging;}
13056  if(HistoCode == "H_HFN_RuDs"){fPavTxtH_HFN_RuDs = fPavComSeveralChanging;}
13057  if(HistoCode == "H_SCs_RuDs"){fPavTxtH_SCs_RuDs = fPavComSeveralChanging;}
13058  }
13059 }
13060 // end of SetParametersPavTxt
13061 
13062 
13063 TPaveText* TEcnaHistos::ActivePavTxt(const TString& HistoCode, const TString& opt_plot)
13064 {
13065  // Active Pad for Same plot option
13066 
13067  TPaveText* main_pavtxt = 0;
13068 
13069  if( opt_plot == fSameOnePlot ){main_pavtxt = fPavTxtH1SamePlus;}
13070 
13071  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13072  {
13073  if(HistoCode == "D_NOE_ChNb"){main_pavtxt = fPavTxtD_NOE_ChNb;}
13074  if(HistoCode == "D_NOE_ChDs"){main_pavtxt = fPavTxtD_NOE_ChDs;}
13075  if(HistoCode == "D_Ped_ChNb"){main_pavtxt = fPavTxtD_Ped_ChNb;}
13076  if(HistoCode == "D_Ped_ChDs"){main_pavtxt = fPavTxtD_Ped_ChDs;}
13077  if(HistoCode == "D_TNo_ChNb"){main_pavtxt = fPavTxtD_TNo_ChNb;}
13078  if(HistoCode == "D_TNo_ChDs"){main_pavtxt = fPavTxtD_TNo_ChDs;}
13079  if(HistoCode == "D_MCs_ChNb"){main_pavtxt = fPavTxtD_MCs_ChNb;}
13080  if(HistoCode == "D_MCs_ChDs"){main_pavtxt = fPavTxtD_MCs_ChDs;}
13081  if(HistoCode == "D_LFN_ChNb"){main_pavtxt = fPavTxtD_LFN_ChNb;}
13082  if(HistoCode == "D_LFN_ChDs"){main_pavtxt = fPavTxtD_LFN_ChDs;}
13083  if(HistoCode == "D_HFN_ChNb"){main_pavtxt = fPavTxtD_HFN_ChNb;}
13084  if(HistoCode == "D_HFN_ChDs"){main_pavtxt = fPavTxtD_HFN_ChDs;}
13085  if(HistoCode == "D_SCs_ChNb"){main_pavtxt = fPavTxtD_SCs_ChNb;}
13086  if(HistoCode == "D_SCs_ChDs"){main_pavtxt = fPavTxtD_SCs_ChDs;}
13087  if(HistoCode == "D_MSp_SpNb"){main_pavtxt = fPavTxtD_MSp_SpNb;}
13088  if(HistoCode == "D_MSp_SpDs"){main_pavtxt = fPavTxtD_MSp_SpDs;}
13089  if(HistoCode == "D_SSp_SpNb"){main_pavtxt = fPavTxtD_SSp_SpNb;}
13090  if(HistoCode == "D_SSp_SpDs"){main_pavtxt = fPavTxtD_SSp_SpDs;}
13091  if(HistoCode == "D_Adc_EvNb"){main_pavtxt = fPavTxtD_Adc_EvNb;}
13092  if(HistoCode == "D_Adc_EvDs"){main_pavtxt = fPavTxtD_Adc_EvDs;}
13093  if(HistoCode == "H_Ped_Date"){main_pavtxt = fPavTxtH_Ped_Date;}
13094  if(HistoCode == "H_TNo_Date"){main_pavtxt = fPavTxtH_TNo_Date;}
13095  if(HistoCode == "H_MCs_Date"){main_pavtxt = fPavTxtH_MCs_Date;}
13096  if(HistoCode == "H_LFN_Date"){main_pavtxt = fPavTxtH_LFN_Date;}
13097  if(HistoCode == "H_HFN_Date"){main_pavtxt = fPavTxtH_HFN_Date;}
13098  if(HistoCode == "H_SCs_Date"){main_pavtxt = fPavTxtH_SCs_Date;}
13099  if(HistoCode == "H_Ped_RuDs"){main_pavtxt = fPavTxtH_Ped_RuDs;}
13100  if(HistoCode == "H_TNo_RuDs"){main_pavtxt = fPavTxtH_TNo_RuDs;}
13101  if(HistoCode == "H_MCs_RuDs"){main_pavtxt = fPavTxtH_MCs_RuDs;}
13102  if(HistoCode == "H_LFN_RuDs"){main_pavtxt = fPavTxtH_LFN_RuDs;}
13103  if(HistoCode == "H_HFN_RuDs"){main_pavtxt = fPavTxtH_HFN_RuDs;}
13104  if(HistoCode == "H_SCs_RuDs"){main_pavtxt = fPavTxtH_SCs_RuDs;}
13105  }
13106 
13107  if( main_pavtxt == 0 )
13108  {cout << "*TEcnaHistos::ActivePavTxt(...)> ERROR: main_pavtxt = " << main_pavtxt << endl;}
13109 
13110  return main_pavtxt;
13111 }
13112 // end of ActivePavTxt
13113 
13114 //void TEcnaHistos::SetViewHistoMarkerAndLine(TH1D* h_his0, const TString& HistoCode, const TString& opt_plot)
13115 //{
13117 //
13118 // TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
13119 //
13120 // //............................... Marker
13121 // h_his0->SetMarkerStyle(1); // default
13122 //
13123 // if( HistoType == "Global" && ( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot ) )
13124 // {h_his0->SetMarkerStyle(7); }
13125 //
13126 // //............................... Line
13127 // h_his0->SetLineWidth(1); // default
13128 //
13129 // if( HistoType == "Global" && ( opt_plot == fSeveralPlot || opt_plot == fSameOnePlot ) )
13130 // {h_his0->SetLineWidth(0);}
13131 //
13132 //}
13133 
13134 void TEcnaHistos::SetViewHistoColors(TH1D* h_his0, const TString& HistoCode,
13135  const TString& opt_plot, const Int_t& arg_AlreadyRead)
13136 {
13137 // Set colors, fill, marker, line style for histo view
13138 
13139  TString HistoType = fCnaParHistos->GetHistoType(HistoCode.Data());
13140  if( HistoType == "Global" ){h_his0->SetMarkerStyle(1);}
13141 
13142  Int_t MaxNbOfColors = fCnaParHistos->GetMaxNbOfColors();
13143 
13144  if( opt_plot == fSameOnePlot )
13145  {
13146  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13147  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13149  if(fMemoColorH1SamePlus>MaxNbOfColors){fMemoColorH1SamePlus = 0;}
13150  }
13151 
13152  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13153  {
13154  if(HistoCode == "D_NOE_ChNb")
13155  {
13156  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rose"));}
13157  if(opt_plot == fSeveralPlot )
13158  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb));
13159  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb));
13161  if(fMemoColorD_NOE_ChNb>MaxNbOfColors){fMemoColorD_NOE_ChNb = 0;}}
13162  }
13163  if(HistoCode == "D_NOE_ChDs")
13164  {
13165  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rose"));}
13166  if(opt_plot == fSeveralPlot )
13167  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs));
13168  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs));
13170  if(fMemoColorD_NOE_ChDs>MaxNbOfColors){fMemoColorD_NOE_ChDs = 0;}}
13171  }
13172  if(HistoCode == "D_Ped_ChNb")
13173  {
13174  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13175  if(opt_plot == fSeveralPlot )
13176  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb));
13177  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb));
13179  if(fMemoColorD_Ped_ChNb>MaxNbOfColors){fMemoColorD_Ped_ChNb = 0;}}
13180  }
13181  if(HistoCode == "D_Ped_ChDs")
13182  {
13183  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13184  if(opt_plot == fSeveralPlot )
13185  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs));
13186  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs));
13188  if(fMemoColorD_Ped_ChDs>MaxNbOfColors){fMemoColorD_Ped_ChDs = 0;}}
13189  }
13190  if(HistoCode == "D_TNo_ChNb")
13191  {
13192  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13193  if(opt_plot == fSeveralPlot )
13194  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb));
13195  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb));
13197  if(fMemoColorD_TNo_ChNb>MaxNbOfColors){fMemoColorD_TNo_ChNb = 0;}}
13198  }
13199  if(HistoCode == "D_TNo_ChDs")
13200  {
13201  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13202  if(opt_plot == fSeveralPlot )
13203  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs));
13204  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs));
13206  if(fMemoColorD_TNo_ChDs>MaxNbOfColors){fMemoColorD_TNo_ChDs = 0;}}
13207  }
13208 
13209  if(HistoCode == "D_MCs_ChNb")
13210  {
13211  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13212  if(opt_plot == fSeveralPlot )
13213  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb));
13214  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb));
13216  if(fMemoColorD_MCs_ChNb>MaxNbOfColors){fMemoColorD_MCs_ChNb = 0;}}
13217  }
13218  if(HistoCode == "D_MCs_ChDs")
13219  {
13220  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13221  if(opt_plot == fSeveralPlot )
13222  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs));
13223  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs));
13225  if(fMemoColorD_MCs_ChDs>MaxNbOfColors){fMemoColorD_MCs_ChDs = 0;}}
13226  }
13227  if(HistoCode == "D_LFN_ChNb")
13228  {
13229  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13230  if(opt_plot == fSeveralPlot )
13231  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb));
13232  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb));
13234  if(fMemoColorD_LFN_ChNb>MaxNbOfColors){fMemoColorD_LFN_ChNb = 0;}}
13235  }
13236  if(HistoCode == "D_LFN_ChDs")
13237  {
13238  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13239  if(opt_plot == fSeveralPlot )
13240  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs));
13241  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs));
13243  if(fMemoColorD_LFN_ChDs>MaxNbOfColors){fMemoColorD_LFN_ChDs = 0;}}
13244  }
13245  if(HistoCode == "D_HFN_ChNb")
13246  {
13247  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13248  if(opt_plot == fSeveralPlot )
13249  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb));
13250  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb));
13252  if(fMemoColorD_HFN_ChNb>MaxNbOfColors){fMemoColorD_HFN_ChNb = 0;}}
13253  }
13254  if(HistoCode == "D_HFN_ChDs")
13255  {
13256  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13257  if(opt_plot == fSeveralPlot )
13258  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs));
13259  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs));
13261  if(fMemoColorD_HFN_ChDs>MaxNbOfColors){fMemoColorD_HFN_ChDs = 0;}}
13262  }
13263 
13264  if(HistoCode == "D_SCs_ChNb")
13265  {
13266  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13267  if(opt_plot == fSeveralPlot )
13268  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb));
13269  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb));
13271  if(fMemoColorD_SCs_ChNb>MaxNbOfColors){fMemoColorD_SCs_ChNb = 0;}}
13272  }
13273  if(HistoCode == "D_SCs_ChDs")
13274  {
13275  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13276  if(opt_plot == fSeveralPlot )
13277  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs));
13278  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs));
13280  if(fMemoColorD_SCs_ChDs>MaxNbOfColors){fMemoColorD_SCs_ChDs = 0;}}
13281  }
13282 
13283  if(HistoCode == "D_MSp_SpNb")
13284  {
13285  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13286  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13287  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13288 
13289  if( opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13290  {h_his0->SetFillColor((Color_t)0);}
13291 
13292  if(opt_plot == fSeveralPlot )
13293  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb));
13294  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb));
13296  if(fMemoColorD_MSp_SpNb>MaxNbOfColors){fMemoColorD_MSp_SpNb = 0;}}
13297  }
13298 
13299  if(HistoCode == "D_MSp_SpDs")
13300  {
13301  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13302  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13303  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13304 
13305  if( opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13306  {h_his0->SetFillColor((Color_t)0);}
13307 
13308  if(opt_plot == fSeveralPlot )
13309  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs));
13310  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs));
13312  if(fMemoColorD_MSp_SpDs>MaxNbOfColors){fMemoColorD_MSp_SpDs = 0;}}
13313  }
13314 
13315  if(HistoCode == "D_SSp_SpNb")
13316  {
13317  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13318  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13319  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13320 
13321  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13322  {h_his0->SetFillColor((Color_t)0);}
13323 
13324  if(opt_plot == fSeveralPlot )
13325  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb));
13326  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb));
13328  if(fMemoColorD_SSp_SpNb>MaxNbOfColors){fMemoColorD_SSp_SpNb = 0;}}
13329  }
13330 
13331  if(HistoCode == "D_SSp_SpDs")
13332  {
13333  if( (opt_plot == fOnlyOnePlot && arg_AlreadyRead == 0) ||
13334  (opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 1 && fPlotAllXtalsInStin == 0 ) )
13335  {h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13336 
13337  if(opt_plot == fOnlyOnePlot && arg_AlreadyRead >= 0 && fPlotAllXtalsInStin == 1 )
13338  {h_his0->SetFillColor((Color_t)0);}
13339 
13340  if(opt_plot == fSeveralPlot )
13341  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs));
13342  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs));
13344  if(fMemoColorD_SSp_SpDs>MaxNbOfColors){fMemoColorD_SSp_SpDs = 0;}}
13345  }
13346 
13347  if(HistoCode == "D_Adc_EvNb")
13348  {
13349  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("orange42"));}
13350  if(opt_plot == fSeveralPlot )
13351  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb));
13352  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb));
13354  if(fMemoColorD_Adc_EvNb>MaxNbOfColors){fMemoColorD_Adc_EvNb = 0;}}
13355  gPad->SetGrid(1,0);
13356  }
13357 
13358  if(HistoCode == "D_Adc_EvDs")
13359  {
13360  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("orange42"));}
13361  if(opt_plot == fSeveralPlot )
13362  {h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs));
13363  h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs));
13365  if(fMemoColorD_Adc_EvDs>MaxNbOfColors){fMemoColorD_Adc_EvDs = 0;}}
13366  }
13367 
13368  if(HistoCode == "H_Ped_RuDs")
13369  {
13370  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("bleu38"));}
13371  if(opt_plot == fSeveralPlot )
13372  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs));
13373  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs));
13375  if(fMemoColorH_Ped_RuDs>MaxNbOfColors){fMemoColorH_Ped_RuDs = 0;}}
13376  gPad->SetGrid(1,1);
13377  }
13378 
13379  if(HistoCode == "H_TNo_RuDs")
13380  {
13381  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge48"));}
13382  if(opt_plot == fSeveralPlot )
13383  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs));
13384  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs));
13386  if(fMemoColorH_TNo_RuDs>MaxNbOfColors){fMemoColorH_TNo_RuDs = 0;}}
13387  gPad->SetGrid(1,1);
13388  }
13389 
13390  if(HistoCode == "H_MCs_RuDs")
13391  {
13392  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("vert31"));}
13393  if(opt_plot == fSeveralPlot )
13394  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs));
13395  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs));
13397  if(fMemoColorH_MCs_RuDs>MaxNbOfColors){fMemoColorH_MCs_RuDs = 0;}}
13398  gPad->SetGrid(1,1);
13399  }
13400 
13401  if(HistoCode == "H_LFN_RuDs")
13402  {
13403  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge44"));}
13404  if(opt_plot == fSeveralPlot )
13405  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs));
13406  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs));
13408  if(fMemoColorH_LFN_RuDs>MaxNbOfColors){fMemoColorH_LFN_RuDs = 0;}}
13409  gPad->SetGrid(1,1);
13410  }
13411 
13412  if(HistoCode == "H_HFN_RuDs")
13413  {
13414  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("rouge50"));}
13415  if(opt_plot == fSeveralPlot )
13416  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs));
13417  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs));
13419  if(fMemoColorH_HFN_RuDs>MaxNbOfColors){fMemoColorH_HFN_RuDs = 0;}}
13420  gPad->SetGrid(1,1);
13421  }
13422 
13423  if(HistoCode == "H_SCs_RuDs")
13424  {
13425  if(opt_plot == fOnlyOnePlot){h_his0->SetFillColor(fCnaParHistos->ColorDefinition("marron23"));}
13426  if(opt_plot == fSeveralPlot )
13427  {h_his0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs));
13428  h_his0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs));
13430  if(fMemoColorH_SCs_RuDs>MaxNbOfColors){fMemoColorH_SCs_RuDs = 0;}}
13431  gPad->SetGrid(1,1);
13432  }
13433  }
13434 
13435  // if(opt_plot == fSeveralPlot || opt_plot == fSameOnePlot){h_his0->SetLineWidth(2);}
13436 }
13437 // end of SetViewHistoColors
13438 
13439 void TEcnaHistos::SetViewGraphColors(TGraph* g_graph0, const TString& HistoCode, const TString& opt_plot)
13440 {
13441 // Set colors for histo view
13442 
13443  Int_t MaxNbOfColors = fCnaParHistos->GetMaxNbOfColors();
13444 
13445  if( opt_plot == fSameOnePlot )
13446  {
13447  g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13448  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH1SamePlus));
13450  if(fMemoColorH1SamePlus>MaxNbOfColors){fMemoColorH1SamePlus = 0;}
13451  gPad->SetGrid(1,1);
13452  }
13453 
13454  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13455  {
13456  if(HistoCode == "H_Ped_Date")
13457  {
13458  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("bleu38"));}
13459  if(opt_plot == fSeveralPlot )
13460  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_Date));
13461  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_Ped_Date));
13463  if(fMemoColorH_Ped_Date>MaxNbOfColors){fMemoColorH_Ped_Date = 0;}}
13464  gPad->SetGrid(1,1);
13465  }
13466 
13467  if(HistoCode == "H_TNo_Date")
13468  {
13469  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("rouge48"));}
13470  if(opt_plot == fSeveralPlot)
13471  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_Date));
13472  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_TNo_Date));
13474  if(fMemoColorH_TNo_Date>MaxNbOfColors){fMemoColorH_TNo_Date = 0;}}
13475  gPad->SetGrid(1,1);
13476  }
13477 
13478  if(HistoCode == "H_MCs_Date")
13479  {
13480  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("vert31"));}
13481  if(opt_plot == fSeveralPlot)
13482  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_Date));
13483  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_MCs_Date));
13485  if(fMemoColorH_MCs_Date>MaxNbOfColors){fMemoColorH_MCs_Date = 0;}}
13486  gPad->SetGrid(1,1);
13487  }
13488 
13489  if(HistoCode == "H_LFN_Date")
13490  {
13491  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("bleu38"));}
13492  if(opt_plot == fSeveralPlot )
13493  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_Date));
13494  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_LFN_Date));
13496  if(fMemoColorH_LFN_Date>MaxNbOfColors){fMemoColorH_LFN_Date = 0;}}
13497  gPad->SetGrid(1,1);
13498  }
13499 
13500  if(HistoCode == "H_HFN_Date")
13501  {
13502  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("rouge48"));}
13503  if(opt_plot == fSeveralPlot)
13504  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_Date));
13505  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_HFN_Date));
13507  if(fMemoColorH_HFN_Date>MaxNbOfColors){fMemoColorH_HFN_Date = 0;}}
13508  gPad->SetGrid(1,1);
13509  }
13510 
13511  if(HistoCode == "H_SCs_Date")
13512  {
13513  if(opt_plot == fOnlyOnePlot){g_graph0->SetMarkerColor(fCnaParHistos->ColorDefinition("vert31"));}
13514  if(opt_plot == fSeveralPlot)
13515  {g_graph0->SetMarkerColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_Date));
13516  g_graph0->SetLineColor(fCnaParHistos->ColorTab(fMemoColorH_SCs_Date));
13518  if(fMemoColorH_SCs_Date>MaxNbOfColors){fMemoColorH_SCs_Date = 0;}}
13519  gPad->SetGrid(1,1);
13520  }
13521  }
13522  //if(opt_plot == fSeveralPlot){g_graph0->SetLineWidth(2);}
13523 }
13524 // end of SetViewGraphColors
13525 
13526 Color_t TEcnaHistos::GetViewHistoColor(const TString& HistoCode, const TString& opt_plot)
13527 {
13528  Color_t couleur = fCnaParHistos->ColorDefinition("noir"); // a priori = "noir"
13529 
13530  if( opt_plot == fSameOnePlot ){couleur = fCnaParHistos->ColorTab(fMemoColorH1SamePlus);}
13531 
13532  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot )
13533  {
13534  if(HistoCode == "D_NOE_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_NOE_ChNb);}
13535  if(HistoCode == "D_NOE_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_NOE_ChDs);}
13536  if(HistoCode == "D_Ped_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Ped_ChNb);}
13537  if(HistoCode == "D_Ped_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Ped_ChDs);}
13538  if(HistoCode == "D_TNo_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_TNo_ChNb);}
13539  if(HistoCode == "D_TNo_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_TNo_ChDs);}
13540  if(HistoCode == "D_MCs_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MCs_ChNb);}
13541  if(HistoCode == "D_MCs_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MCs_ChDs);}
13542  if(HistoCode == "D_LFN_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_LFN_ChNb);}
13543  if(HistoCode == "D_LFN_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_LFN_ChDs);}
13544  if(HistoCode == "D_HFN_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_HFN_ChNb);}
13545  if(HistoCode == "D_HFN_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_HFN_ChDs);}
13546  if(HistoCode == "D_SCs_ChNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SCs_ChNb);}
13547  if(HistoCode == "D_SCs_ChDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SCs_ChDs);}
13548  if(HistoCode == "D_MSp_SpNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MSp_SpNb);}
13549  if(HistoCode == "D_MSp_SpDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_MSp_SpDs);}
13550  if(HistoCode == "D_SSp_SpNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SSp_SpNb);}
13551  if(HistoCode == "D_SSp_SpDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_SSp_SpDs);}
13552  if(HistoCode == "D_Adc_EvNb"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Adc_EvNb);}
13553  if(HistoCode == "D_Adc_EvDs"){couleur = fCnaParHistos->ColorTab(fMemoColorD_Adc_EvDs);}
13554  if(HistoCode == "H_Ped_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_Ped_Date);}
13555  if(HistoCode == "H_TNo_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_TNo_Date);}
13556  if(HistoCode == "H_MCs_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_MCs_Date);}
13557  if(HistoCode == "H_LFN_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_LFN_Date);}
13558  if(HistoCode == "H_HFN_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_HFN_Date);}
13559  if(HistoCode == "H_SCs_Date"){couleur = fCnaParHistos->ColorTab(fMemoColorH_SCs_Date);}
13560  if(HistoCode == "H_Ped_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_Ped_RuDs);}
13561  if(HistoCode == "H_TNo_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_TNo_RuDs);}
13562  if(HistoCode == "H_MCs_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_MCs_RuDs);}
13563  if(HistoCode == "H_LFN_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_LFN_RuDs);}
13564  if(HistoCode == "H_HFN_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_HFN_RuDs);}
13565  if(HistoCode == "H_SCs_RuDs"){couleur = fCnaParHistos->ColorTab(fMemoColorH_SCs_RuDs);}
13566  }
13567  return couleur;
13568 }
13569 // end of GetViewHistoColor
13570 
13571 Color_t TEcnaHistos::GetSCColor(const TString& DeeEndcap, const TString& DeeDir, const TString& QuadType)
13572 {
13573  //gives the SC color for the numbering plots
13574  TColor* my_color = new TColor();
13575  Color_t couleur = fCnaParHistos->ColorDefinition("noir"); // default = "noir"
13576 
13577  if( DeeEndcap == "EE+" )
13578  {
13579  if ( DeeDir == "right" && QuadType == "top" ){couleur=fCnaParHistos->ColorDefinition("rouge");}
13580  if ( DeeDir == "right" && QuadType == "bottom" ){couleur=fCnaParHistos->ColorDefinition("bleu_fonce");}
13581  if ( DeeDir == "left" && QuadType == "top" ){couleur=(Color_t)my_color->GetColor("#006600");}
13582  if ( DeeDir == "left" && QuadType == "bottom" ){couleur=(Color_t)my_color->GetColor("#CC3300");}
13583  }
13584  if( DeeEndcap == "EE-" )
13585  {
13586  if ( DeeDir == "right" && QuadType == "top" ){couleur=(Color_t)my_color->GetColor("#008800");}
13587  if ( DeeDir == "right" && QuadType == "bottom" ){couleur=(Color_t)my_color->GetColor("#EE5500");}
13588  if ( DeeDir == "left" && QuadType == "top" ){couleur=fCnaParHistos->ColorDefinition("rouge");}
13589  if ( DeeDir == "left" && QuadType == "bottom" ){couleur=fCnaParHistos->ColorDefinition("bleu_fonce");}
13590  }
13591 
13592  return couleur;
13593 }
13595 {
13596  // Set presentation (axis title offsets, title size, label size, etc...
13597 
13598  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13599  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), " ");
13600  fCnaParHistos->SetViewHistoOffsets(histo, HistoType.Data(), " ");
13601  fCnaParHistos->SetViewHistoStats(histo, HistoType.Data());
13602 }
13603 void TEcnaHistos::SetHistoPresentation(TH1D* histo, const TString& HistoType, const TString& opt_plot)
13604 {
13605 // Set presentation (axis title offsets, title size, label size, etc...
13606 
13607  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13608  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), opt_plot.Data());
13609  fCnaParHistos->SetViewHistoOffsets(histo, HistoType.Data(), opt_plot.Data());
13610  fCnaParHistos->SetViewHistoStats(histo, HistoType.Data());
13611 }
13612 
13613 void TEcnaHistos::SetGraphPresentation(TGraph* graph, const TString& HistoType, const TString& opt_plot)
13614 {
13615 // Set presentation (axis title offsets, title size, label size, etc...
13616 
13617  fCnaParHistos->SetViewHistoStyle(HistoType.Data());
13618  fCnaParHistos->SetViewHistoPadMargins(HistoType.Data(), opt_plot);
13619  fCnaParHistos->SetViewGraphOffsets(graph, HistoType.Data());
13620 
13621  //............................... Graph marker
13622  graph->SetMarkerStyle(1);
13623  if( HistoType == "Evol" ){graph->SetMarkerStyle(20);}
13624 }
13625 
13626 //=====================================================================
13627 //
13628 // NewCanvas, ReInitCanvas
13629 //
13630 //=====================================================================
13631 void TEcnaHistos::NewCanvas(const TString& opt_plot)
13632 {
13633 // ReInit canvas in option SAME n in order to restart a new SAME n plot
13634 // (called by user only for option Same n)
13635 
13636  if( opt_plot == fSameOnePlot )
13637  {
13641  fPavTxtH1SamePlus = 0; fClosedH1SamePlus = kFALSE;
13642  }
13643  else
13644  {
13645  cout << "TEcnaHistos::NewCanvas(...)> *** ERROR *** " << opt_plot.Data() << ": "
13646  << "unknown option for NewCanvas. Only " << fSameOnePlot << " option is accepted."
13647  << fTTBELL << endl;
13648  }
13649 }
13650 
13651 void TEcnaHistos::ReInitCanvas(const TString& HistoCode, const TString& opt_plot)
13652 {
13653 // ReInit canvas in option SAME and SAME n
13654 
13655  if( opt_plot == fSameOnePlot )
13656  {
13660  fPavTxtH1SamePlus = 0; fClosedH1SamePlus = kFALSE;
13661  }
13662 
13663  if( opt_plot == fOnlyOnePlot || opt_plot == fSeveralPlot)
13664  {
13665  if(HistoCode == "D_NOE_ChNb")
13666  {
13670  fPavTxtD_NOE_ChNb = 0; fClosedD_NOE_ChNb = kFALSE;
13671  }
13672 
13673  if(HistoCode == "D_NOE_ChDs")
13674  {
13678  fPavTxtD_NOE_ChDs = 0; fClosedD_NOE_ChDs = kFALSE;
13679  }
13680 
13681  if(HistoCode == "D_Ped_ChNb") // (ReInitCanvas)
13682  {
13686  fPavTxtD_Ped_ChNb = 0; fClosedD_Ped_ChNb = kFALSE;
13687  }
13688 
13689  if(HistoCode == "D_Ped_ChDs")
13690  {
13694  fPavTxtD_Ped_ChDs = 0; fClosedD_Ped_ChDs = kFALSE;
13695  }
13696 
13697  if(HistoCode == "D_TNo_ChNb")
13698  {
13702  fPavTxtD_TNo_ChNb = 0; fClosedD_TNo_ChNb = kFALSE;
13703  }
13704 
13705  if(HistoCode == "D_TNo_ChDs")
13706  {
13710  fPavTxtD_TNo_ChDs = 0; fClosedD_TNo_ChDs = kFALSE;
13711  }
13712 
13713  if(HistoCode == "D_MCs_ChNb") // (ReInitCanvas)
13714  {
13718  fPavTxtD_MCs_ChNb = 0; fClosedD_MCs_ChNb = kFALSE;
13719  }
13720 
13721  if(HistoCode == "D_MCs_ChDs")
13722  {
13726  fPavTxtD_MCs_ChDs = 0; fClosedD_MCs_ChDs = kFALSE;
13727  }
13728 
13729  if(HistoCode == "D_LFN_ChNb")
13730  {
13734  fPavTxtD_LFN_ChNb = 0; fClosedD_LFN_ChNb = kFALSE;
13735  }
13736 
13737  if(HistoCode == "D_LFN_ChDs") // (ReInitCanvas)
13738  {
13742  fPavTxtD_LFN_ChDs= 0; fClosedD_LFN_ChDs = kFALSE;
13743  }
13744 
13745  if(HistoCode == "D_HFN_ChNb")
13746  {
13750  fPavTxtD_HFN_ChNb = 0; fClosedD_HFN_ChNb = kFALSE;
13751  }
13752 
13753  if(HistoCode == "D_HFN_ChDs")
13754  {
13758  fPavTxtD_HFN_ChDs = 0; fClosedD_HFN_ChDs = kFALSE;
13759  }
13760 
13761  if(HistoCode == "D_SCs_ChNb")
13762  {
13766  fPavTxtD_SCs_ChNb = 0; fClosedD_SCs_ChNb = kFALSE;
13767  }
13768 
13769  if(HistoCode == "D_SCs_ChDs") // (ReInitCanvas)
13770  {
13774  fPavTxtD_SCs_ChDs = 0; fClosedD_SCs_ChDs = kFALSE;
13775  }
13776 
13777  if(HistoCode == "D_MSp_SpNb")
13778  {
13782  fPavTxtD_MSp_SpNb = 0; fClosedD_MSp_SpNb = kFALSE;
13783  }
13784 
13785  if(HistoCode == "D_MSp_SpDs")
13786  {
13790  fPavTxtD_MSp_SpDs = 0; fClosedD_MSp_SpDs = kFALSE;
13791  }
13792 
13793  if(HistoCode == "D_SSp_SpNb")
13794  {
13798  fPavTxtD_SSp_SpNb = 0; fClosedD_SSp_SpNb = kFALSE;
13799  }
13800 
13801  if(HistoCode == "D_SSp_SpDs")
13802  {
13806  fPavTxtD_SSp_SpDs = 0; fClosedD_SSp_SpDs = kFALSE;
13807  }
13808 
13809  if(HistoCode == "D_Adc_EvNb") // (ReInitCanvas)
13810  {
13814  fPavTxtD_Adc_EvNb = 0; fClosedD_Adc_EvNb = kFALSE;
13815  }
13816 
13817  if(HistoCode == "D_Adc_EvDs")
13818  {
13822  fPavTxtD_Adc_EvDs = 0; fClosedD_Adc_EvDs = kFALSE;
13823  }
13824 
13825 
13826  if(HistoCode == "H_Ped_Date")
13827  {
13832  }
13833 
13834  if(HistoCode == "H_TNo_Date")
13835  {
13840  }
13841 
13842  if(HistoCode == "H_MCs_Date") // (ReInitCanvas)
13843  {
13848  }
13849 
13850 
13851  if(HistoCode == "H_LFN_Date")
13852  {
13857  }
13858 
13859  if(HistoCode == "H_HFN_Date")
13860  {
13865  }
13866 
13867  if(HistoCode == "H_SCs_Date")
13868  {
13873  }
13874 
13875  if(HistoCode == "H_Ped_RuDs")
13876  {
13881  }
13882 
13883  if(HistoCode == "H_TNo_RuDs")
13884  {
13889  }
13890 
13891  if(HistoCode == "H_MCs_RuDs") // (ReInitCanvas)
13892  {
13897  }
13898 
13899 
13900  if(HistoCode == "H_LFN_RuDs")
13901  {
13906  }
13907 
13908  if(HistoCode == "H_HFN_RuDs")
13909  {
13914  }
13915 
13916  if(HistoCode == "H_SCs_RuDs")
13917  {
13922  }
13923  }
13924 }
13925 // ------- end of ReInitCanvas(...) ------------
13926 
13927 //==========================================================================================
13928 void TEcnaHistos::WriteMatrixAscii(const TString& BetweenWhat, const TString& CorOrCov,
13929  const Int_t& StexStinEcna, const Int_t& MatrixBinIndex,
13930  const Int_t& MatSize, const TMatrixD& read_matrix)
13931 {
13932 // write matrix in ascii file
13933 
13934  Int_t ChanNumber = MatrixBinIndex;
13935 
13939 
13940  if( BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix )
13941  {
13942  fCnaWrite->WriteAsciiCorrelationsBetweenSamples(StexStinEcna, ChanNumber, MatSize, read_matrix);
13944  }
13945 
13946  if( BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix )
13947  {
13948  fCnaWrite->WriteAsciiCovariancesBetweenSamples(StexStinEcna, ChanNumber, MatSize, read_matrix);
13950  }
13951 }
13952 //...............................................................................................
13953 void TEcnaHistos::WriteHistoAscii(const TString& HistoCode, const Int_t& HisSize,
13954  const TVectorD& read_histo)
13955 {
13956 // write matrix in ascii file
13957 
13962 
13963  fCnaWrite->WriteAsciiHisto(HistoCode, HisSize, read_histo);
13965 }
13966 
13968 
13969 //---------------> messages de rappel pour l'auteur:
13970 //
13971 //======= 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 ==============!!!!
13972 // A EVITER ABSOLUMENT quand on est sous TEcnaGui CAR LE cin >> BLOQUE X11
13973 // puisqu'on n'a pas la main dans la fenetre de compte-rendu de la CNA
13974 // {Int_t cintoto; cout << "taper 0 pour continuer" << endl; cin >> cintoto;}
13975 // *=================================================*
13976 // | |
13977 //++++++++++++++++++++++++| A T T E N T I O N: PAS DE TEST "cintoto" ici! |+++++++++++++++++++++!!!!
13978 // | |
13979 // *=================================================*
13980 //
13981 // INFO: When "new" fails to allocate the memory for an object, or "new[]" fails to allocate the memory
13982 // for an object array, a std::bad_alloc object is thrown.
13983 // "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
Double_t fD_SCs_ChNbYmin
Definition: TEcnaHistos.h:563
TEcnaNumbering * fEcalNumbering
Definition: TEcnaHistos.h:373
Int_t fMemoColorH_LFN_RuDs
Definition: TEcnaHistos.h:664
int i
Definition: DBlmapReader.cc:9
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:1404
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:891
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:609
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
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:806
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()
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:102
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:383
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:822
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
void EEGridAxis(const Float_t &, const Float_t &, const Int_t &, const TString &, const TString &)
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
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 &)
int j
Definition: DBlmapReader.cc:9
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:811
Double_t fD_Adc_EvDsYmax
Definition: TEcnaHistos.h:577
Bool_t StatusFileFound()
Definition: TEcnaHistos.cc:831
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
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
Int_t fgMaxCar
Definition: TEcnaHistos.h:351
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
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 &)
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:1187
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:678
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
unsigned int UInt_t
Definition: FUTypes.h:12
Definition: adjgraph.h:12
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()
ifstream fFcin_f
Definition: TEcnaHistos.h:383
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:801
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:826
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 &)
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:1434
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
tuple cout
Definition: gather_cfg.py:121
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:229
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:748
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:817
void SigmaSamplesXtals(const TVectorD &, const Int_t &, const Int_t &, const Int_t &, const TString &)
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:832
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:797
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