CMS 3D CMS Logo

rootFunction.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_Utilities_rootFunction_h
2 #define PhysicsTools_Utilities_rootFunction_h
4 
5 namespace root {
6  template<unsigned int args, typename Tag, typename F>
10  }
11 
12  template<unsigned int args, typename F>
14  function(F& f) {
15  return function_t<args, helper::null_t>(f);
16  }
17 
18  template<unsigned int args, typename Tag, typename F>
21  const funct::Parameter & p0) {
25  return fun;
26  }
27 
28  template<unsigned int args, typename F>
30  function(F& f,
31  const funct::Parameter & p0) {
32  return function_t<args, helper::null_t>(f, p0);
33  }
34 
35  template<unsigned int args, typename Tag, typename F>
38  const funct::Parameter & p0,
39  const funct::Parameter & p1) {
44  return fun;
45  }
46 
47  template<unsigned int args, typename F>
49  function(F& f,
50  const funct::Parameter & p0,
51  const funct::Parameter & p1) {
52  return function<args, helper::null_t>(f, p0, p1);
53  }
54 
55  template<unsigned int args, typename Tag, typename F>
58  const funct::Parameter & p0,
59  const funct::Parameter & p1,
60  const funct::Parameter & p2) {
66  return fun;
67  }
68 
69  template<unsigned int args, typename F>
71  function(F& f,
72  const funct::Parameter & p0,
73  const funct::Parameter & p1,
74  const funct::Parameter & p2) {
75  return function<args, helper::null_t>(f, p0, p1, p2);
76  }
77 
78  template<unsigned int args, typename Tag, typename F>
81  const funct::Parameter & p0,
82  const funct::Parameter & p1,
83  const funct::Parameter & p2,
84  const funct::Parameter & p3) {
91  return fun;
92  }
93 
94  template<unsigned int args, typename F>
96  function(F& f,
97  const funct::Parameter & p0,
98  const funct::Parameter & p1,
99  const funct::Parameter & p2,
100  const funct::Parameter & p3) {
101  return function<args, helper::null_t>(f, p0, p1, p2, p3);
102  }
103 
104  template<unsigned int args, typename Tag, typename F>
107  const funct::Parameter & p0,
108  const funct::Parameter & p1,
109  const funct::Parameter & p2,
110  const funct::Parameter & p3,
111  const funct::Parameter & p4) {
119  return fun;
120  }
121 
122  template<unsigned int args, typename F>
124  function(F& f,
125  const funct::Parameter & p0,
126  const funct::Parameter & p1,
127  const funct::Parameter & p2,
128  const funct::Parameter & p3,
129  const funct::Parameter & p4) {
130  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4);
131  }
132 
133  template<unsigned int args, typename Tag, typename F>
136  const funct::Parameter & p0,
137  const funct::Parameter & p1,
138  const funct::Parameter & p2,
139  const funct::Parameter & p3,
140  const funct::Parameter & p4,
141  const funct::Parameter & p5) {
150  return fun;
151  }
152 
153  template<unsigned int args, typename F>
155  function(F& f,
156  const funct::Parameter & p0,
157  const funct::Parameter & p1,
158  const funct::Parameter & p2,
159  const funct::Parameter & p3,
160  const funct::Parameter & p4,
161  const funct::Parameter & p5) {
162  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5);
163  }
164 
165  template<unsigned int args, typename Tag, typename F>
168  const funct::Parameter & p0,
169  const funct::Parameter & p1,
170  const funct::Parameter & p2,
171  const funct::Parameter & p3,
172  const funct::Parameter & p4,
173  const funct::Parameter & p5,
174  const funct::Parameter & p6) {
184  return fun;
185  }
186 
187  template<unsigned int args, typename F>
189  function(F& f,
190  const funct::Parameter & p0,
191  const funct::Parameter & p1,
192  const funct::Parameter & p2,
193  const funct::Parameter & p3,
194  const funct::Parameter & p4,
195  const funct::Parameter & p5,
196  const funct::Parameter & p6) {
197  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6);
198  }
199 
200  template<unsigned int args, typename Tag, typename F>
203  const funct::Parameter & p0,
204  const funct::Parameter & p1,
205  const funct::Parameter & p2,
206  const funct::Parameter & p3,
207  const funct::Parameter & p4,
208  const funct::Parameter & p5,
209  const funct::Parameter & p6,
210  const funct::Parameter & p7) {
221  return fun;
222  }
223 
224  template<unsigned int args, typename F>
226  function(F& f,
227  const funct::Parameter & p0,
228  const funct::Parameter & p1,
229  const funct::Parameter & p2,
230  const funct::Parameter & p3,
231  const funct::Parameter & p4,
232  const funct::Parameter & p5,
233  const funct::Parameter & p6,
234  const funct::Parameter & p7) {
235  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7);
236  }
237 
238  template<unsigned int args, typename Tag, typename F>
241  const funct::Parameter & p0,
242  const funct::Parameter & p1,
243  const funct::Parameter & p2,
244  const funct::Parameter & p3,
245  const funct::Parameter & p4,
246  const funct::Parameter & p5,
247  const funct::Parameter & p6,
248  const funct::Parameter & p7,
249  const funct::Parameter & p8) {
261  return fun;
262  }
263 
264  template<unsigned int args, typename F>
266  function(F& f,
267  const funct::Parameter & p0,
268  const funct::Parameter & p1,
269  const funct::Parameter & p2,
270  const funct::Parameter & p3,
271  const funct::Parameter & p4,
272  const funct::Parameter & p5,
273  const funct::Parameter & p6,
274  const funct::Parameter & p7,
275  const funct::Parameter & p8) {
276  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8);
277  }
278 
279  template<unsigned int args, typename Tag, typename F>
282  const funct::Parameter & p0,
283  const funct::Parameter & p1,
284  const funct::Parameter & p2,
285  const funct::Parameter & p3,
286  const funct::Parameter & p4,
287  const funct::Parameter & p5,
288  const funct::Parameter & p6,
289  const funct::Parameter & p7,
290  const funct::Parameter & p8,
291  const funct::Parameter & p9) {
304  return fun;
305  }
306 
307  template<unsigned int args, typename F>
309  function(F& f,
310  const funct::Parameter & p0,
311  const funct::Parameter & p1,
312  const funct::Parameter & p2,
313  const funct::Parameter & p3,
314  const funct::Parameter & p4,
315  const funct::Parameter & p5,
316  const funct::Parameter & p6,
317  const funct::Parameter & p7,
318  const funct::Parameter & p8,
319  const funct::Parameter & p9) {
320  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
321  }
322 
323  template<unsigned int args, typename Tag, typename F>
326  const funct::Parameter & p0,
327  const funct::Parameter & p1,
328  const funct::Parameter & p2,
329  const funct::Parameter & p3,
330  const funct::Parameter & p4,
331  const funct::Parameter & p5,
332  const funct::Parameter & p6,
333  const funct::Parameter & p7,
334  const funct::Parameter & p8,
335  const funct::Parameter & p9,
336  const funct::Parameter & p10) {
350  return fun;
351  }
352 
353  template<unsigned int args, typename F>
355  function(F& f,
356  const funct::Parameter & p0,
357  const funct::Parameter & p1,
358  const funct::Parameter & p2,
359  const funct::Parameter & p3,
360  const funct::Parameter & p4,
361  const funct::Parameter & p5,
362  const funct::Parameter & p6,
363  const funct::Parameter & p7,
364  const funct::Parameter & p8,
365  const funct::Parameter & p9,
366  const funct::Parameter & p10) {
367  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
368  }
369 
370  template<unsigned int args, typename Tag, typename F>
373  const funct::Parameter & p0,
374  const funct::Parameter & p1,
375  const funct::Parameter & p2,
376  const funct::Parameter & p3,
377  const funct::Parameter & p4,
378  const funct::Parameter & p5,
379  const funct::Parameter & p6,
380  const funct::Parameter & p7,
381  const funct::Parameter & p8,
382  const funct::Parameter & p9,
383  const funct::Parameter & p10,
384  const funct::Parameter & p11) {
399  return fun;
400  }
401 
402  template<unsigned int args, typename F>
404  function(F& f,
405  const funct::Parameter & p0,
406  const funct::Parameter & p1,
407  const funct::Parameter & p2,
408  const funct::Parameter & p3,
409  const funct::Parameter & p4,
410  const funct::Parameter & p5,
411  const funct::Parameter & p6,
412  const funct::Parameter & p7,
413  const funct::Parameter & p8,
414  const funct::Parameter & p9,
415  const funct::Parameter & p10,
416  const funct::Parameter & p11) {
417  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
418  }
419 
420  template<unsigned int args, typename Tag, typename F>
423  const funct::Parameter & p0,
424  const funct::Parameter & p1,
425  const funct::Parameter & p2,
426  const funct::Parameter & p3,
427  const funct::Parameter & p4,
428  const funct::Parameter & p5,
429  const funct::Parameter & p6,
430  const funct::Parameter & p7,
431  const funct::Parameter & p8,
432  const funct::Parameter & p9,
433  const funct::Parameter & p10,
434  const funct::Parameter & p11,
435  const funct::Parameter & p12) {
451  return fun;
452  }
453 
454  template<unsigned int args, typename F>
456  function(F& f,
457  const funct::Parameter & p0,
458  const funct::Parameter & p1,
459  const funct::Parameter & p2,
460  const funct::Parameter & p3,
461  const funct::Parameter & p4,
462  const funct::Parameter & p5,
463  const funct::Parameter & p6,
464  const funct::Parameter & p7,
465  const funct::Parameter & p8,
466  const funct::Parameter & p9,
467  const funct::Parameter & p10,
468  const funct::Parameter & p11,
469  const funct::Parameter & p12) {
470  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
471  }
472 
473  template<unsigned int args, typename Tag, typename F>
476  const funct::Parameter & p0,
477  const funct::Parameter & p1,
478  const funct::Parameter & p2,
479  const funct::Parameter & p3,
480  const funct::Parameter & p4,
481  const funct::Parameter & p5,
482  const funct::Parameter & p6,
483  const funct::Parameter & p7,
484  const funct::Parameter & p8,
485  const funct::Parameter & p9,
486  const funct::Parameter & p10,
487  const funct::Parameter & p11,
488  const funct::Parameter & p12,
489  const funct::Parameter & p13) {
506  return fun;
507  }
508 
509  template<unsigned int args, typename F>
511  function(F& f,
512  const funct::Parameter & p0,
513  const funct::Parameter & p1,
514  const funct::Parameter & p2,
515  const funct::Parameter & p3,
516  const funct::Parameter & p4,
517  const funct::Parameter & p5,
518  const funct::Parameter & p6,
519  const funct::Parameter & p7,
520  const funct::Parameter & p8,
521  const funct::Parameter & p9,
522  const funct::Parameter & p10,
523  const funct::Parameter & p11,
524  const funct::Parameter & p12,
525  const funct::Parameter & p13) {
526  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
527  }
528 
529  template<unsigned int args, typename Tag, typename F>
532  const funct::Parameter & p0,
533  const funct::Parameter & p1,
534  const funct::Parameter & p2,
535  const funct::Parameter & p3,
536  const funct::Parameter & p4,
537  const funct::Parameter & p5,
538  const funct::Parameter & p6,
539  const funct::Parameter & p7,
540  const funct::Parameter & p8,
541  const funct::Parameter & p9,
542  const funct::Parameter & p10,
543  const funct::Parameter & p11,
544  const funct::Parameter & p12,
545  const funct::Parameter & p13,
546  const funct::Parameter & p14) {
564  return fun;
565  }
566 
567  template<unsigned int args, typename F>
569  function(F& f,
570  const funct::Parameter & p0,
571  const funct::Parameter & p1,
572  const funct::Parameter & p2,
573  const funct::Parameter & p3,
574  const funct::Parameter & p4,
575  const funct::Parameter & p5,
576  const funct::Parameter & p6,
577  const funct::Parameter & p7,
578  const funct::Parameter & p8,
579  const funct::Parameter & p9,
580  const funct::Parameter & p10,
581  const funct::Parameter & p11,
582  const funct::Parameter & p12,
583  const funct::Parameter & p13,
584  const funct::Parameter & p14) {
585  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
586  }
587 
588  template<unsigned int args, typename Tag, typename F>
591  const funct::Parameter & p0,
592  const funct::Parameter & p1,
593  const funct::Parameter & p2,
594  const funct::Parameter & p3,
595  const funct::Parameter & p4,
596  const funct::Parameter & p5,
597  const funct::Parameter & p6,
598  const funct::Parameter & p7,
599  const funct::Parameter & p8,
600  const funct::Parameter & p9,
601  const funct::Parameter & p10,
602  const funct::Parameter & p11,
603  const funct::Parameter & p12,
604  const funct::Parameter & p13,
605  const funct::Parameter & p14,
606  const funct::Parameter & p15) {
625  return fun;
626  }
627 
628  template<unsigned int args, typename F>
630  function(F& f,
631  const funct::Parameter & p0,
632  const funct::Parameter & p1,
633  const funct::Parameter & p2,
634  const funct::Parameter & p3,
635  const funct::Parameter & p4,
636  const funct::Parameter & p5,
637  const funct::Parameter & p6,
638  const funct::Parameter & p7,
639  const funct::Parameter & p8,
640  const funct::Parameter & p9,
641  const funct::Parameter & p10,
642  const funct::Parameter & p11,
643  const funct::Parameter & p12,
644  const funct::Parameter & p13,
645  const funct::Parameter & p14,
646  const funct::Parameter & p15) {
647  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
648  }
649 
650  template<unsigned int args, typename Tag, typename F>
653  const funct::Parameter & p0,
654  const funct::Parameter & p1,
655  const funct::Parameter & p2,
656  const funct::Parameter & p3,
657  const funct::Parameter & p4,
658  const funct::Parameter & p5,
659  const funct::Parameter & p6,
660  const funct::Parameter & p7,
661  const funct::Parameter & p8,
662  const funct::Parameter & p9,
663  const funct::Parameter & p10,
664  const funct::Parameter & p11,
665  const funct::Parameter & p12,
666  const funct::Parameter & p13,
667  const funct::Parameter & p14,
668  const funct::Parameter & p15,
669  const funct::Parameter & p16) {
689  return fun;
690  }
691 
692  template<unsigned int args, typename F>
694  function(F& f,
695  const funct::Parameter & p0,
696  const funct::Parameter & p1,
697  const funct::Parameter & p2,
698  const funct::Parameter & p3,
699  const funct::Parameter & p4,
700  const funct::Parameter & p5,
701  const funct::Parameter & p6,
702  const funct::Parameter & p7,
703  const funct::Parameter & p8,
704  const funct::Parameter & p9,
705  const funct::Parameter & p10,
706  const funct::Parameter & p11,
707  const funct::Parameter & p12,
708  const funct::Parameter & p13,
709  const funct::Parameter & p14,
710  const funct::Parameter & p15,
711  const funct::Parameter & p16) {
712  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16);
713  }
714 
715  template<unsigned int args, typename Tag, typename F>
718  const funct::Parameter & p0,
719  const funct::Parameter & p1,
720  const funct::Parameter & p2,
721  const funct::Parameter & p3,
722  const funct::Parameter & p4,
723  const funct::Parameter & p5,
724  const funct::Parameter & p6,
725  const funct::Parameter & p7,
726  const funct::Parameter & p8,
727  const funct::Parameter & p9,
728  const funct::Parameter & p10,
729  const funct::Parameter & p11,
730  const funct::Parameter & p12,
731  const funct::Parameter & p13,
732  const funct::Parameter & p14,
733  const funct::Parameter & p15,
734  const funct::Parameter & p16,
735  const funct::Parameter & p17) {
756  return fun;
757  }
758 
759  template<unsigned int args, typename F>
761  function(F& f,
762  const funct::Parameter & p0,
763  const funct::Parameter & p1,
764  const funct::Parameter & p2,
765  const funct::Parameter & p3,
766  const funct::Parameter & p4,
767  const funct::Parameter & p5,
768  const funct::Parameter & p6,
769  const funct::Parameter & p7,
770  const funct::Parameter & p8,
771  const funct::Parameter & p9,
772  const funct::Parameter & p10,
773  const funct::Parameter & p11,
774  const funct::Parameter & p12,
775  const funct::Parameter & p13,
776  const funct::Parameter & p14,
777  const funct::Parameter & p15,
778  const funct::Parameter & p16,
779  const funct::Parameter & p17) {
780  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17);
781  }
782 
783  template<unsigned int args, typename Tag, typename F>
786  const funct::Parameter & p0,
787  const funct::Parameter & p1,
788  const funct::Parameter & p2,
789  const funct::Parameter & p3,
790  const funct::Parameter & p4,
791  const funct::Parameter & p5,
792  const funct::Parameter & p6,
793  const funct::Parameter & p7,
794  const funct::Parameter & p8,
795  const funct::Parameter & p9,
796  const funct::Parameter & p10,
797  const funct::Parameter & p11,
798  const funct::Parameter & p12,
799  const funct::Parameter & p13,
800  const funct::Parameter & p14,
801  const funct::Parameter & p15,
802  const funct::Parameter & p16,
803  const funct::Parameter & p17,
804  const funct::Parameter & p18) {
826  return fun;
827  }
828 
829  template<unsigned int args, typename F>
831  function(F& f,
832  const funct::Parameter & p0,
833  const funct::Parameter & p1,
834  const funct::Parameter & p2,
835  const funct::Parameter & p3,
836  const funct::Parameter & p4,
837  const funct::Parameter & p5,
838  const funct::Parameter & p6,
839  const funct::Parameter & p7,
840  const funct::Parameter & p8,
841  const funct::Parameter & p9,
842  const funct::Parameter & p10,
843  const funct::Parameter & p11,
844  const funct::Parameter & p12,
845  const funct::Parameter & p13,
846  const funct::Parameter & p14,
847  const funct::Parameter & p15,
848  const funct::Parameter & p16,
849  const funct::Parameter & p17,
850  const funct::Parameter & p18) {
851  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18);
852  }
853 
854  template<unsigned int args, typename Tag, typename F>
857  const funct::Parameter & p0,
858  const funct::Parameter & p1,
859  const funct::Parameter & p2,
860  const funct::Parameter & p3,
861  const funct::Parameter & p4,
862  const funct::Parameter & p5,
863  const funct::Parameter & p6,
864  const funct::Parameter & p7,
865  const funct::Parameter & p8,
866  const funct::Parameter & p9,
867  const funct::Parameter & p10,
868  const funct::Parameter & p11,
869  const funct::Parameter & p12,
870  const funct::Parameter & p13,
871  const funct::Parameter & p14,
872  const funct::Parameter & p15,
873  const funct::Parameter & p16,
874  const funct::Parameter & p17,
875  const funct::Parameter & p18,
876  const funct::Parameter & p19) {
899  return fun;
900  }
901 
902  template<unsigned int args, typename F>
904  function(F& f,
905  const funct::Parameter & p0,
906  const funct::Parameter & p1,
907  const funct::Parameter & p2,
908  const funct::Parameter & p3,
909  const funct::Parameter & p4,
910  const funct::Parameter & p5,
911  const funct::Parameter & p6,
912  const funct::Parameter & p7,
913  const funct::Parameter & p8,
914  const funct::Parameter & p9,
915  const funct::Parameter & p10,
916  const funct::Parameter & p11,
917  const funct::Parameter & p12,
918  const funct::Parameter & p13,
919  const funct::Parameter & p14,
920  const funct::Parameter & p15,
921  const funct::Parameter & p16,
922  const funct::Parameter & p17,
923  const funct::Parameter & p18,
924  const funct::Parameter & p19) {
925  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16, p17, p18, p19);
926  }
927 
928  template<unsigned int args, typename Tag, typename F>
930  function_t(F& f, const std::vector<funct::Parameter> & pars) {
933  std::vector<funct::Parameter>::const_iterator i,
934  b = pars.begin(), e = pars.end();
935  for(i = b; i != e; ++i)
937  return fun;
938  }
939 
940  template<unsigned int args, typename F>
942  function(F& f, const std::vector<funct::Parameter> & pars) {
943  return function_t<args, helper::null_t>(f, pars);
944  }
945 
946  template<unsigned int args, typename Tag, typename F>
948  function_t(F& f, const std::vector<boost::shared_ptr<double> > & pars) {
951  std::vector<boost::shared_ptr<double> >::const_iterator i,
952  b = pars.begin(), e = pars.end();
953  for(i = b; i != e; ++i)
955  return fun;
956  }
957 
958  template<unsigned int args, typename F>
960  function(F& f, const std::vector<boost::shared_ptr<double> > & pars) {
961  return function_t<args, helper::null_t>(f, pars);
962  }
963 
964 }
965 
966 #endif
int i
Definition: DBlmapReader.cc:9
Definition: vlib.h:256
double(* root_function)(const double *, const double *)
helper::RootFunctionHelper< F, args, Tag >::root_function function_t(F &f)
Definition: rootFunction.h:8
double p4[4]
Definition: TauolaWrapper.h:92
double f[11][100]
double p2[4]
Definition: TauolaWrapper.h:90
static void addParameter(const boost::shared_ptr< double > &par)
double b
Definition: hdecay.h:120
double p1[4]
Definition: TauolaWrapper.h:89
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
Definition: blowfish.cc:281
static root_function fun(F &f)
double p3[4]
Definition: TauolaWrapper.h:91