ATLAS Offline Software
TFCS2DFunctionTemplateHistogram.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateHistogram_h
6 #define ISF_FASTCALOSIMEVENT_TFCS2DFunctionTemplateHistogram_h
7 
8 #include "TFCS2DFunction.h"
10 #include "TH1.h"
11 #include "TH2.h"
12 #include "TBuffer.h"
13 
14 #include <iostream>
15 
16 template <typename Txvec, typename Tyvec, typename Tz, typename Trandom = float>
18 public:
20  typedef Trandom random_type;
21  typedef Txvec xvec_type;
22  typedef Tyvec yvec_type;
23  typedef Tz z_value_type;
24 
26  if (hist)
28  };
30 
31  std::size_t MemorySizeArray() const {
32  return m_HistoBordersx.MemorySizeArray() +
33  m_HistoBordersy.MemorySizeArray() +
34  m_HistoContents.MemorySizeArray();
35  };
36  std::size_t MemorySize() const { return sizeof(*this) + MemorySizeArray(); };
37 
39  void set_nbins(size_t nbinsx, size_t nbinsy) {
40  m_HistoBordersx.set_nbins(nbinsx);
41  m_HistoBordersy.set_nbins(nbinsy);
42  m_HistoContents.set_nbins(nbinsx * nbinsy);
43  };
44 
46  inline size_t get_nbins() const { return m_HistoContents.get_nbins(); };
47  // inline size_t get_nbinsx() const {return m_HistoBordersx.get_nbins();};
48  // inline size_t get_nbinsy() const {return m_HistoBordersy.get_nbins();};
49 
52  void Initialize(const TH2 *hist) {
53  Int_t nbinsx = hist->GetNbinsX();
54  Int_t nbinsy = hist->GetNbinsY();
55  std::vector<double> temp_HistoContents;
56  int first, last;
57  double integral =
58  CheckAndIntegrate2DHistogram(hist, temp_HistoContents, first, last);
59  printf("initializing 2D template...");
60  if (integral <= 0) {
61  set_nbins(0, 0);
62  } else {
63  set_nbins(nbinsx, nbinsy);
64 
65  // m_HistoBordersx.SetMinMax(hist->GetXaxis()->GetBinLowEdge(first+1),hist->GetXaxis()->GetBinUpEdge(last+1));
66  m_HistoBordersx.SetMinMax(hist->GetXaxis()->GetBinLowEdge(1),
67  hist->GetXaxis()->GetBinUpEdge(nbinsx));
68  m_HistoBordersy.SetMinMax(hist->GetYaxis()->GetBinLowEdge(1),
69  hist->GetYaxis()->GetBinUpEdge(nbinsy));
70  // Int_t ihist=0;
71  for (Int_t ibinx = 1; ibinx <= hist->GetNbinsX(); ++ibinx) {
72  m_HistoBordersx.SetBinLowEdge(
73  ibinx, hist->GetXaxis()->GetBinLowEdge(ibinx + 1));
74  // if(ihist>0)
75  // if(m_HistoBorders.GetBinLowEdge(ihist-1)==m_HistoBorders.GetBinLowEdge(ihist))
76  // { ATH_MSG_INFO( bin="<<ibin+1<<"
77  // x="<<hist->GetXaxis()->GetBinLowEdge(ibin+1)<<"
78  // fx="<<m_HistoBorders.GetBinLowEdge(ihist);
79  // --ihist;
80  // ATH_MSG_INFO(" bin="<<ibin <<"
81  // x="<<hist->GetXaxis()->GetBinLowEdge(ibin )<<"
82  // fx="<<m_HistoBorders.GetBinLowEdge(ihist));
83  // }
84  } // for
85  for (Int_t ibiny = 1; ibiny <= hist->GetNbinsY(); ++ibiny) {
86  m_HistoBordersy.SetBinLowEdge(
87  ibiny, hist->GetYaxis()->GetBinLowEdge(ibiny + 1));
88  // if(ihist>0)
89  // if(m_HistoBorders.GetBinLowEdge(ihist-1)==m_HistoBorders.GetBinLowEdge(ihist))
90  // { ATH_MSG_INFO("Skip bin="<<ibin+1<<"
91  // x="<<hist->GetXaxis()->GetBinLowEdge(ibin+1)<<"
92  // fx="<<m_HistoBorders.GetBinLowEdge(ihist));
93  // --ihist;
94  // ATH_MSG_INFO(" bin="<<ibin <<"
95  // x="<<hist->GetXaxis()->GetBinLowEdge(ibin )<<"
96  // fx="<<m_HistoBorders.GetBinLowEdge(ihist));
97  // }
98  } // for
99 
100  for (Int_t ibinx = 1; ibinx <= hist->GetNbinsX(); ++ibinx)
101  for (Int_t ibiny = 1; ibiny <= hist->GetNbinsY(); ++ibiny) {
102  int globalbin = (ibinx - 1) * hist->GetNbinsY() + ibiny - 1;
103  m_HistoContents.set_fraction(
104  globalbin, temp_HistoContents[globalbin] / integral);
105  // if(ihist>0)
106  // if(m_HistoContents.get_fraction(ihist-1)==m_HistoContents.get_fraction(ihist))
107  // {
108  // ATH_MSG_INFO("Skip fbin="<<ihist<<"
109  // fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
110  // frac="<<m_HistoContents.get_fraction(ihist));
111  // --ihist;
112  // ATH_MSG_INFO(" fbin="<<ihist<<"
113  // fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
114  // frac="<<m_HistoContents.get_fraction(ihist));
115  // }
116 
117  // ATH_MSG_INFO("bin="<<ibin+1<<"
118  // fbin="<<ihist<<"/"<<m_HistoBorders.get_nbins()<<"
119  // x=["<<hist->GetXaxis()->GetBinLowEdge(ibin+1)<<","<<hist->GetXaxis()->GetBinUpEdge(ibin+1)<<"]
120  // fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
121  // int="<<temp_HistoContents[ibin]/integral<<"
122  // frac="<<m_HistoContents.get_fraction(ihist));
123 
124  // ++ihist;
125  }
126  // if(ihist!=nbins) {
127  // set_nbins(ihist);
128  // m_HistoBorders.SetMinMax(hist->GetXaxis()->GetBinLowEdge(first+1),hist->GetXaxis()->GetBinUpEdge(last+1));
129  // }
130  } // for ibinx
131  } // for ibiny
132 
133  /*
134  for( Int_t ibiny=1; ibiny<=hist->GetNbinsY(); ++ibiny )
135  for( Int_t ibinx=1; ibinx<=hist->GetNbinsX(); ++ibinx )
136  {
137  int globalbin = (ibiny-1)*hist->GetNbinsX() + ibinx - 1;
138  m_HistoContents.set_fraction(globalbin,
139  temp_HistoContents[globalbin]/integral);
140  // if(ihist>0)
141  if(m_HistoContents.get_fraction(ihist-1)==m_HistoContents.get_fraction(ihist))
142  {
143  // ATH_MSG_INFO("Skip fbin="<<ihist<<"
144  fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
145  frac="<<m_HistoContents.get_fraction(ihist));
146  // --ihist;
147  // ATH_MSG_INFO(" fbin="<<ihist<<"
148  fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
149  frac="<<m_HistoContents.get_fraction(ihist));
150  // }
151 
152  // ATH_MSG_INFO("bin="<<ibin+1<<"
153  fbin="<<ihist<<"/"<<m_HistoBorders.get_nbins()<<"
154  x=["<<hist->GetXaxis()->GetBinLowEdge(ibin+1)<<","<<hist->GetXaxis()->GetBinUpEdge(ibin+1)<<"]
155  fx="<<m_HistoBorders.GetBinLowEdge(ihist)<<"
156  int="<<temp_HistoContents[ibin]/integral<<"
157  frac="<<m_HistoContents.get_fraction(ihist));
158 
159  // ++ihist;
160  }
161  // if(ihist!=nbins) {
162  // set_nbins(ihist);
163  //
164  m_HistoBorders.SetMinMax(hist->GetXaxis()->GetBinLowEdge(first+1),hist->GetXaxis()->GetBinUpEdge(last+1));
165  // }
166  }//for ibinx
167  }//for ibiny
168  */
169  // using TFCS2DFunction::rnd_to_fct;
170 
173 
175 
176  virtual void rnd_to_fct(float &valuex, float &valuey, float rnd) const {
177  if (m_HistoContents.get_nbins() == 0) {
178  valuex = 0.0;
179  valuey = 0.0;
180  }
181  Trandom residual_rnd;
182  size_t ibin = m_HistoContents.get_bin(rnd, residual_rnd);
183  int ibiny = ibin % m_HistoBordersy.get_nbins();
184  int ibinx = ibin / m_HistoBordersy.get_nbins();
185  valuex = m_HistoBordersx.position(ibinx, 0.5);
186  valuey = m_HistoBordersy.position(ibiny, residual_rnd);
187  // valuex = 2.0+ 0.3*rnd;
188  // valuey = 1200.0 + rnd*500.0;
189  }
190 
191  virtual void rnd_to_fct(float &valuex, float &valuey, float rnd,
192  float rnd2) const {
193  if (m_HistoContents.get_nbins() == 0) {
194  valuex = 0.0;
195  valuey = 0.0;
196  }
197  Trandom residual_rnd;
198  size_t ibin = m_HistoContents.get_bin(rnd, residual_rnd);
199  int ibiny =
200  ibin % m_HistoBordersy
201  .get_nbins(); // printf("%d ", m_HistoBordersy.get_nbins() );
202  int ibinx =
203  ibin / m_HistoBordersy
204  .get_nbins(); // printf("%d ", m_HistoBordersx.get_nbins() );
205  // getchar();
206  valuex = m_HistoBordersx.position(ibinx, rnd2);
207  valuey = m_HistoBordersy.position(ibiny, residual_rnd);
208  // valuex = 2.0+ rnd;
209  // valuey = 1200.0 + rnd2*500.0;
210  }
211  /*
212  virtual void rnd_to_fct(float& valuex,float& valuey,float rnd, float rnd2)
213  const { if(m_HistoContents.get_nbins()==0) { valuex = 0.0; valuey = 0.0; }
214  Trandom residual_rnd;
215  size_t ibin=m_HistoContents.get_bin(rnd,residual_rnd);
216  int ibiny = ibin / m_HistoBordersx.get_nbins(); //printf("%d ",
217  m_HistoBordersy.get_nbins() ); int ibinx = ibin % m_HistoBordersx.get_nbins();
218  //printf("%d ", m_HistoBordersx.get_nbins() ); getchar(); valuex =
219  m_HistoBordersx.position(ibinx, rnd2); valuey =
220  m_HistoBordersy.position(ibiny,residual_rnd);
221  //valuex = 2.0+ rnd;
222  //valuey = 1200.0 + rnd2*500.0;
223  }*/
224 
225  inline const Txvec &get_HistoBordersx() const { return m_HistoBordersx; };
226  inline const Tyvec &get_HistoBordersy() const { return m_HistoBordersy; };
227 
230 
231  inline Txvec &get_HistoBordersx() { return m_HistoBordersx; };
232  inline Tyvec &get_HistoBordersy() { return m_HistoBordersy; };
233 
236  return m_HistoContents;
237  };
239  return m_HistoContents;
240  };
241 
242 protected:
246 
247 private:
249  1) // TFCS2DFunctionTemplateHistogram
250 };
251 
254  TFCS1DFunction_HistogramInt8BinEdges,
255  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> {
256 public:
260  uint8_t, float>(h){};
261 
263  1) // TFCS2DFunctionInt8Int8Int8Histogram
264 };
265 
268  TFCS1DFunction_HistogramInt8BinEdges,
269  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> {
270 public:
274  uint16_t, float>(h){};
275 
277  1) // TFCS2DFunctionInt8Int8Int16Histogram
278 };
279 
282  TFCS1DFunction_HistogramInt8BinEdges,
283  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> {
284 public:
288  uint32_t, float>(h){};
289 
291  1) // TFCS2DFunctionInt8Int8Int32Histogram
292 };
295  TFCS1DFunction_HistogramInt8BinEdges,
296  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> {
297 public:
301  uint8_t, float>(h){};
302 
304  1) // TFCS2DFunctionInt8Int16Int8Histogram
305 };
306 
309  TFCS1DFunction_HistogramInt8BinEdges,
310  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> {
311 public:
315  uint16_t, float>(h){};
316 
318  1) // TFCS2DFunctionInt8Int16Int16Histogram
319 };
320 
323  TFCS1DFunction_HistogramInt8BinEdges,
324  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> {
325 public:
329  uint32_t, float>(h){};
330 
332  1) // TFCS2DFunctionInt8Int16Int32Histogram
333 };
336  TFCS1DFunction_HistogramInt8BinEdges,
337  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> {
338 public:
342  uint8_t, float>(h){};
343 
345  1) // TFCS2DFunctionInt8Int32Int8Histogram
346 };
349  TFCS1DFunction_HistogramInt8BinEdges,
350  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> {
351 public:
355  uint16_t, float>(h){};
356 
358  1) // TFCS2DFunctionInt8Int32Int16Histogram
359 };
362  TFCS1DFunction_HistogramInt8BinEdges,
363  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> {
364 public:
368  uint32_t, float>(h){};
369 
371  1) // TFCS2DFunctionInt8Int32Int32Histogram
372 };
373 
376  TFCS1DFunction_HistogramInt16BinEdges,
377  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> {
378 public:
382  uint8_t, float>(h){};
383 
385  1) // TFCS2DFunctionInt16Int8Int8Histogram
386 };
387 
390  TFCS1DFunction_HistogramInt16BinEdges,
391  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> {
392 public:
396  uint16_t, float>(h){};
397 
399  1) // TFCS2DFunctionInt16Int8Int16Histogram
400 };
401 
404  TFCS1DFunction_HistogramInt16BinEdges,
405  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> {
406 public:
410  uint32_t, float>(h){};
411 
413  1) // TFCS2DFunctionInt16Int8Int32Histogram
414 };
417  TFCS1DFunction_HistogramInt16BinEdges,
418  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> {
419 public:
423  uint8_t, float>(h){};
424 
426  1) // TFCS2DFunctionInt16Int16Int8Histogram
427 };
428 
431  TFCS1DFunction_HistogramInt16BinEdges,
432  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> {
433 public:
437  uint16_t, float>(h){};
438 
440  1) // TFCS2DFunctionInt16Int16Int16Histogram
441 };
442 
445  TFCS1DFunction_HistogramInt16BinEdges,
446  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> {
447 public:
451  uint32_t, float>(h){};
452 
454  1) // TFCS2DFunctionInt16Int16Int32Histogram
455 };
458  TFCS1DFunction_HistogramInt16BinEdges,
459  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> {
460 public:
464  uint8_t, float>(h){};
465 
467  1) // TFCS2DFunctionInt16Int32Int8Histogram
468 };
471  TFCS1DFunction_HistogramInt16BinEdges,
472  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> {
473 public:
477  uint16_t, float>(h){};
478 
480  1) // TFCS2DFunctionInt16Int32Int16Histogram
481 };
484  TFCS1DFunction_HistogramInt16BinEdges,
485  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> {
486 public:
490  uint32_t, float>(h){};
491 
493  1) // TFCS2DFunctionInt16Int32Int32Histogram
494 };
495 
498  TFCS1DFunction_HistogramInt32BinEdges,
499  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> {
500 public:
504  uint8_t, float>(h){};
505 
507  1) // TFCS2DFunctionInt32Int8Int8Histogram
508 };
509 
512  TFCS1DFunction_HistogramInt32BinEdges,
513  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> {
514 public:
518  uint16_t, float>(h){};
519 
521  1) // TFCS2DFunctionInt32Int8Int16Histogram
522 };
523 
526  TFCS1DFunction_HistogramInt32BinEdges,
527  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> {
528 public:
532  uint32_t, float>(h){};
533 
535  1) // TFCS2DFunctionInt32Int8Int32Histogram
536 };
539  TFCS1DFunction_HistogramInt32BinEdges,
540  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> {
541 public:
545  uint8_t, float>(h){};
546 
548  1) // TFCS2DFunctionInt32Int16Int8Histogram
549 };
550 
553  TFCS1DFunction_HistogramInt32BinEdges,
554  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> {
555 public:
559  uint16_t, float>(h){};
560 
562  1) // TFCS2DFunctionInt32Int16Int16Histogram
563 };
564 
567  TFCS1DFunction_HistogramInt32BinEdges,
568  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> {
569 public:
573  uint32_t, float>(h){};
574 
576  1) // TFCS2DFunctionInt32Int16Int32Histogram
577 };
580  TFCS1DFunction_HistogramInt32BinEdges,
581  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> {
582 public:
586  uint8_t, float>(h){};
587 
589  1) // TFCS2DFunctionInt32Int32Int8Histogram
590 };
593  TFCS1DFunction_HistogramInt32BinEdges,
594  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> {
595 public:
599  uint16_t, float>(h){};
600 
602  1) // TFCS2DFunctionInt32Int32Int16Histogram
603 };
606  TFCS1DFunction_HistogramInt32BinEdges,
607  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> {
608 public:
612  uint32_t, float>(h){};
613 
615  1) // TFCS2DFunctionInt32Int32Int32Histogram
616 };
617 
618 #if defined(__ROOTCLING__) && defined(__FastCaloSimStandAlone__)
619 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
620  TFCS1DFunction_HistogramInt8BinEdges, \
621  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> + \
622  ;
623 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
624  TFCS1DFunction_HistogramInt8BinEdges, \
625  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> + \
626  ;
627 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
628  TFCS1DFunction_HistogramInt8BinEdges, \
629  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> + \
630  ;
631 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
632  TFCS1DFunction_HistogramInt8BinEdges, \
633  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> + \
634  ;
635 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
636  TFCS1DFunction_HistogramInt8BinEdges, \
637  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> + \
638  ;
639 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
640  TFCS1DFunction_HistogramInt8BinEdges, \
641  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> + \
642  ;
643 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
644  TFCS1DFunction_HistogramInt8BinEdges, \
645  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> + \
646  ;
647 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
648  TFCS1DFunction_HistogramInt8BinEdges, \
649  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> + \
650  ;
651 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
652  TFCS1DFunction_HistogramInt8BinEdges, \
653  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> + \
654  ;
655 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
656  TFCS1DFunction_HistogramInt16BinEdges, \
657  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> + \
658  ;
659 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
660  TFCS1DFunction_HistogramInt16BinEdges, \
661  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> + \
662  ;
663 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
664  TFCS1DFunction_HistogramInt16BinEdges, \
665  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> + \
666  ;
667 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
668  TFCS1DFunction_HistogramInt16BinEdges, \
669  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> + \
670  ;
671 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
672  TFCS1DFunction_HistogramInt16BinEdges, \
673  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> + \
674  ;
675 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
676  TFCS1DFunction_HistogramInt16BinEdges, \
677  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> + \
678  ;
679 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
680  TFCS1DFunction_HistogramInt16BinEdges, \
681  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> + \
682  ;
683 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
684  TFCS1DFunction_HistogramInt16BinEdges, \
685  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> + \
686  ;
687 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
688  TFCS1DFunction_HistogramInt16BinEdges, \
689  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> + \
690  ;
691 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
692  TFCS1DFunction_HistogramInt32BinEdges, \
693  TFCS1DFunction_HistogramInt8BinEdges, uint8_t, float> + \
694  ;
695 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
696  TFCS1DFunction_HistogramInt32BinEdges, \
697  TFCS1DFunction_HistogramInt8BinEdges, uint16_t, float> + \
698  ;
699 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
700  TFCS1DFunction_HistogramInt32BinEdges, \
701  TFCS1DFunction_HistogramInt8BinEdges, uint32_t, float> + \
702  ;
703 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
704  TFCS1DFunction_HistogramInt32BinEdges, \
705  TFCS1DFunction_HistogramInt16BinEdges, uint8_t, float> + \
706  ;
707 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
708  TFCS1DFunction_HistogramInt32BinEdges, \
709  TFCS1DFunction_HistogramInt16BinEdges, uint16_t, float> + \
710  ;
711 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
712  TFCS1DFunction_HistogramInt32BinEdges, \
713  TFCS1DFunction_HistogramInt16BinEdges, uint32_t, float> + \
714  ;
715 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
716  TFCS1DFunction_HistogramInt32BinEdges, \
717  TFCS1DFunction_HistogramInt32BinEdges, uint8_t, float> + \
718  ;
719 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
720  TFCS1DFunction_HistogramInt32BinEdges, \
721  TFCS1DFunction_HistogramInt32BinEdges, uint16_t, float> + \
722  ;
723 #pragma link C++ class TFCS2DFunctionTemplateHistogram < \
724  TFCS1DFunction_HistogramInt32BinEdges, \
725  TFCS1DFunction_HistogramInt32BinEdges, uint32_t, float> + \
726  ;
727 
728 #pragma link C++ class TFCS2DFunctionInt8Int8Int8Histogram + ;
729 #pragma link C++ class TFCS2DFunctionInt8Int8Int16Histogram + ;
730 #pragma link C++ class TFCS2DFunctionInt8Int8Int32Histogram + ;
731 #pragma link C++ class TFCS2DFunctionInt8Int16Int8Histogram + ;
732 #pragma link C++ class TFCS2DFunctionInt8Int16Int16Histogram + ;
733 #pragma link C++ class TFCS2DFunctionInt8Int16Int32Histogram + ;
734 #pragma link C++ class TFCS2DFunctionInt8Int32Int8Histogram + ;
735 #pragma link C++ class TFCS2DFunctionInt8Int32Int16Histogram + ;
736 #pragma link C++ class TFCS2DFunctionInt8Int32Int32Histogram + ;
737 
738 #pragma link C++ class TFCS2DFunctionInt16Int8Int8Histogram + ;
739 #pragma link C++ class TFCS2DFunctionInt16Int8Int16Histogram + ;
740 #pragma link C++ class TFCS2DFunctionInt16Int8Int32Histogram + ;
741 #pragma link C++ class TFCS2DFunctionInt16Int16Int8Histogram + ;
742 #pragma link C++ class TFCS2DFunctionInt16Int16Int16Histogram + ;
743 #pragma link C++ class TFCS2DFunctionInt16Int16Int32Histogram + ;
744 #pragma link C++ class TFCS2DFunctionInt16Int32Int8Histogram + ;
745 #pragma link C++ class TFCS2DFunctionInt16Int32Int16Histogram + ;
746 #pragma link C++ class TFCS2DFunctionInt16Int32Int32Histogram + ;
747 
748 #pragma link C++ class TFCS2DFunctionInt32Int8Int8Histogram + ;
749 #pragma link C++ class TFCS2DFunctionInt32Int8Int16Histogram + ;
750 #pragma link C++ class TFCS2DFunctionInt32Int8Int32Histogram + ;
751 #pragma link C++ class TFCS2DFunctionInt32Int16Int8Histogram + ;
752 #pragma link C++ class TFCS2DFunctionInt32Int16Int16Histogram + ;
753 #pragma link C++ class TFCS2DFunctionInt32Int16Int32Histogram + ;
754 #pragma link C++ class TFCS2DFunctionInt32Int32Int8Histogram + ;
755 #pragma link C++ class TFCS2DFunctionInt32Int32Int16Histogram + ;
756 #pragma link C++ class TFCS2DFunctionInt32Int32Int32Histogram + ;
757 
758 #endif
759 
760 #endif
TFCS2DFunctionInt16Int32Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:459
TFCS2DFunctionInt16Int16Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:446
TFCS1DFunction_size_t
uint32_t TFCS1DFunction_size_t
Definition: TFCS1DFunctionTemplateHelpers.h:16
TFCS2DFunctionTemplateHistogram::get_HistoBordersy
Tyvec & get_HistoBordersy()
Definition: TFCS2DFunctionTemplateHistogram.h:232
TFCS2DFunctionTemplateHistogram::size_t
TFCS1DFunction_size_t size_t
Definition: TFCS2DFunctionTemplateHistogram.h:19
TFCS2DFunctionInt32Int32Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:594
TFCS2DFunctionInt16Int16Int8Histogram::TFCS2DFunctionInt16Int16Int8Histogram
TFCS2DFunctionInt16Int16Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:420
TFCS2DFunctionInt8Int8Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:283
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
integral
double integral(TH1 *h)
Definition: computils.cxx:57
TFCS2DFunctionInt32Int16Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:554
TFCS2DFunctionInt8Int32Int32Histogram::TFCS2DFunctionInt8Int32Int32Histogram
TFCS2DFunctionInt8Int32Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:365
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
plotBeamSpotVxVal.globalbin
globalbin
Definition: plotBeamSpotVxVal.py:247
TFCS1DFunction_HistogramInt16BinEdges
Definition: TFCS1DFunctionTemplateHelpers.h:517
TFCS2DFunctionInt8Int16Int16Histogram::TFCS2DFunctionInt8Int16Int16Histogram
TFCS2DFunctionInt8Int16Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:312
plotmaker.hist
hist
Definition: plotmaker.py:148
TFCS2DFunctionInt8Int8Int32Histogram::TFCS2DFunctionInt8Int8Int32Histogram
TFCS2DFunctionInt8Int8Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:285
TFCS2DFunctionInt16Int8Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:391
TFCS2DFunctionTemplateHistogram::get_HistoBordersx
Txvec & get_HistoBordersx()
inline void get_XYZfromGlobal(int &ix, int &iy, int &iz, int global) const {hist;};
Definition: TFCS2DFunctionTemplateHistogram.h:231
TFCS2DFunctionTemplateHistogram::m_HistoBordersy
Tyvec m_HistoBordersy
Definition: TFCS2DFunctionTemplateHistogram.h:244
TFCS1DFunction_HistogramInt32BinEdges
Definition: TFCS1DFunctionTemplateHelpers.h:528
TFCS2DFunction.h
TFCS2DFunctionInt16Int16Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:418
TFCS2DFunctionInt32Int32Int8Histogram::TFCS2DFunctionInt32Int32Int8Histogram
TFCS2DFunctionInt32Int32Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:583
TFCS2DFunctionInt16Int8Int8Histogram::TFCS2DFunctionInt16Int8Int8Histogram
TFCS2DFunctionInt16Int8Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:379
TFCS2DFunctionInt8Int32Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:350
TFCS2DFunctionTemplateHistogram::Initialize
void Initialize(const TH2 *hist)
Initialize from root histogram.
Definition: TFCS2DFunctionTemplateHistogram.h:52
TFCS2DFunctionInt16Int8Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:377
TFCS2DFunctionInt16Int32Int16Histogram::TFCS2DFunctionInt16Int32Int16Histogram
TFCS2DFunctionInt16Int32Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:474
TFCS2DFunctionInt32Int16Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:540
TFCS2DFunctionInt16Int8Int16Histogram::TFCS2DFunctionInt16Int8Int16Histogram
TFCS2DFunctionInt16Int8Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:393
TFCS2DFunctionInt16Int32Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:472
TFCS2DFunctionTemplateHistogram::random_type
Trandom random_type
Definition: TFCS2DFunctionTemplateHistogram.h:20
TFCS2DFunctionInt16Int16Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:432
TFCS2DFunctionInt8Int16Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:310
TFCS2DFunctionInt16Int8Int32Histogram::TFCS2DFunctionInt16Int8Int32Histogram
TFCS2DFunctionInt16Int8Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:407
TFCS2DFunctionInt8Int32Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:363
TFCS2DFunctionInt16Int16Int16Histogram::TFCS2DFunctionInt16Int16Int16Histogram
TFCS2DFunctionInt16Int16Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:434
TFCS2DFunctionInt8Int8Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:269
TFCS2DFunctionInt32Int8Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:527
TFCS2DFunction::CheckAndIntegrate2DHistogram
static double CheckAndIntegrate2DHistogram(const TH2 *hist, std::vector< double > &integral_vec, int &first, int &last)
Definition: TFCS2DFunction.cxx:26
TFCS2DFunctionTemplateHistogram::rnd_to_fct
virtual void rnd_to_fct(float &valuex, float &valuey, float rnd, float rnd2) const
Definition: TFCS2DFunctionTemplateHistogram.h:191
TFCS2DFunctionTemplateHistogram::rnd_to_fct
virtual void rnd_to_fct(float &valuex, float &valuey, float rnd) const
Definition: TFCS2DFunctionTemplateHistogram.h:176
TFCS2DFunctionInt8Int16Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:324
TFCS2DFunction::rnd_to_fct
virtual void rnd_to_fct(float &valuex, float &valuey, float rnd0, float rnd1) const =0
TFCS2DFunctionInt8Int8Int16Histogram::TFCS2DFunctionInt8Int8Int16Histogram
TFCS2DFunctionInt8Int8Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:271
TFCS2DFunctionTemplateHistogram::m_HistoBordersx
Txvec m_HistoBordersx
Definition: TFCS2DFunctionTemplateHistogram.h:240
TFCS2DFunctionInt8Int16Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:296
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
TFCS2DFunctionTemplateHistogram::yvec_type
Tyvec yvec_type
Definition: TFCS2DFunctionTemplateHistogram.h:22
TFCS2DFunctionTemplateHistogram::get_HistoContents
const TFCS1DFunction_HistogramContent< Tz, Trandom > & get_HistoContents() const
Definition: TFCS2DFunctionTemplateHistogram.h:235
TFCS2DFunctionTemplateHistogram::get_HistoBordersy
const Tyvec & get_HistoBordersy() const
Definition: TFCS2DFunctionTemplateHistogram.h:226
TFCS2DFunctionInt16Int16Int32Histogram::TFCS2DFunctionInt16Int16Int32Histogram
TFCS2DFunctionInt16Int16Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:448
TFCS2DFunctionInt8Int32Int8Histogram::TFCS2DFunctionInt8Int32Int8Histogram
TFCS2DFunctionInt8Int32Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:339
TFCS2DFunctionTemplateHistogram::set_nbins
void set_nbins(size_t nbinsx, size_t nbinsy)
set number of bins
Definition: TFCS2DFunctionTemplateHistogram.h:39
TFCS2DFunctionTemplateHistogram::~TFCS2DFunctionTemplateHistogram
~TFCS2DFunctionTemplateHistogram()
Definition: TFCS2DFunctionTemplateHistogram.h:29
TFCS2DFunctionTemplateHistogram::m_HistoContents
TFCS1DFunction_HistogramContent< Tz, Trandom > m_HistoContents
Definition: TFCS2DFunctionTemplateHistogram.h:245
TFCS2DFunctionInt32Int8Int16Histogram::TFCS2DFunctionInt32Int8Int16Histogram
TFCS2DFunctionInt32Int8Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:515
TFCS2DFunctionInt32Int8Int8Histogram::TFCS2DFunctionInt32Int8Int8Histogram
TFCS2DFunctionInt32Int8Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:501
TFCS2DFunctionInt32Int16Int16Histogram::TFCS2DFunctionInt32Int16Int16Histogram
TFCS2DFunctionInt32Int16Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:556
TFCS1DFunction_HistogramInt8BinEdges
Definition: TFCS1DFunctionTemplateHelpers.h:507
TFCS2DFunctionInt32Int8Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:499
TFCS2DFunctionTemplateHistogram::xvec_type
Txvec xvec_type
Definition: TFCS2DFunctionTemplateHistogram.h:21
TFCS2DFunctionInt32Int8Int16Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:513
TFCS2DFunctionInt32Int16Int32Histogram::TFCS2DFunctionInt32Int16Int32Histogram
TFCS2DFunctionInt32Int16Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:570
TFCS2DFunctionInt8Int8Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:255
TFCS2DFunctionInt32Int32Int32Histogram::TFCS2DFunctionInt32Int32Int32Histogram
TFCS2DFunctionInt32Int32Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:609
TFCS2DFunctionInt32Int16Int8Histogram::TFCS2DFunctionInt32Int16Int8Histogram
TFCS2DFunctionInt32Int16Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:542
TFCS2DFunctionInt8Int16Int32Histogram::TFCS2DFunctionInt8Int16Int32Histogram
TFCS2DFunctionInt8Int16Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:326
TFCS2DFunctionInt8Int8Int8Histogram::TFCS2DFunctionInt8Int8Int8Histogram
TFCS2DFunctionInt8Int8Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:257
TFCS1DFunction_HistogramContent
Definition: TFCS1DFunctionTemplateHelpers.h:157
h
TFCS2DFunctionInt32Int32Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:607
TFCS2DFunctionInt16Int32Int8Histogram::TFCS2DFunctionInt16Int32Int8Histogram
TFCS2DFunctionInt16Int32Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:461
TFCS2DFunctionTemplateHistogram::MemorySizeArray
std::size_t MemorySizeArray() const
Definition: TFCS2DFunctionTemplateHistogram.h:31
DeMoScan.first
bool first
Definition: DeMoScan.py:536
TFCS2DFunctionInt32Int32Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:581
TFCS2DFunctionTemplateHistogram::get_HistoContents
TFCS1DFunction_HistogramContent< Tz, Trandom > & get_HistoContents()
Definition: TFCS2DFunctionTemplateHistogram.h:238
TFCS2DFunction
Definition: TFCS2DFunction.h:15
TFCS2DFunctionInt32Int16Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:568
TFCS2DFunctionTemplateHistogram::MemorySize
std::size_t MemorySize() const
Gives the total memory size, including the size of additional memory allocated inside the class.
Definition: TFCS2DFunctionTemplateHistogram.h:36
TFCS2DFunctionTemplateHistogram
Definition: TFCS2DFunctionTemplateHistogram.h:17
TFCS1DFunctionTemplateHelpers.h
TFCS2DFunctionTemplateHistogram::get_nbins
size_t get_nbins() const
return number of bins
Definition: TFCS2DFunctionTemplateHistogram.h:46
TFCS2DFunctionInt8Int32Int8Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:337
TFCS2DFunctionInt32Int8Int32Histogram::TFCS2DFunctionInt32Int8Int32Histogram
TFCS2DFunctionInt32Int8Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:529
TFCS2DFunctionTemplateHistogram::get_HistoBordersx
const Txvec & get_HistoBordersx() const
Definition: TFCS2DFunctionTemplateHistogram.h:225
TFCS2DFunctionInt16Int8Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:405
TFCS2DFunctionInt32Int32Int16Histogram::TFCS2DFunctionInt32Int32Int16Histogram
TFCS2DFunctionInt32Int32Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:596
TFCS2DFunctionInt8Int32Int16Histogram::TFCS2DFunctionInt8Int32Int16Histogram
TFCS2DFunctionInt8Int32Int16Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:352
TFCS2DFunctionInt16Int32Int32Histogram::TFCS2DFunctionInt16Int32Int32Histogram
TFCS2DFunctionInt16Int32Int32Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:487
TFCS2DFunctionTemplateHistogram::TFCS2DFunctionTemplateHistogram
TFCS2DFunctionTemplateHistogram(TH2 *hist=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:25
TFCS2DFunctionTemplateHistogram::z_value_type
Tz z_value_type
Definition: TFCS2DFunctionTemplateHistogram.h:23
readCCLHist.float
float
Definition: readCCLHist.py:83
TFCS2DFunctionInt8Int16Int8Histogram::TFCS2DFunctionInt8Int16Int8Histogram
TFCS2DFunctionInt8Int16Int8Histogram(TH2 *h=nullptr)
Definition: TFCS2DFunctionTemplateHistogram.h:298
TFCS2DFunctionInt16Int32Int32Histogram
Definition: TFCS2DFunctionTemplateHistogram.h:485