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
5 
6 namespace root {
7  template<unsigned int args, typename Tag, typename F>
11  }
12 
13  template<unsigned int args, typename F>
15  function(F& f) {
16  return function_t<args, helper::null_t>(f);
17  }
18 
19  template<unsigned int args, typename Tag, typename F>
22  const funct::Parameter & p0) {
26  return fun;
27  }
28 
29  template<unsigned int args, typename F>
31  function(F& f,
32  const funct::Parameter & p0) {
33  return function_t<args, helper::null_t>(f, p0);
34  }
35 
36  template<unsigned int args, typename Tag, typename F>
39  const funct::Parameter & p0,
40  const funct::Parameter & p1) {
45  return fun;
46  }
47 
48  template<unsigned int args, typename F>
50  function(F& f,
51  const funct::Parameter & p0,
52  const funct::Parameter & p1) {
53  return function<args, helper::null_t>(f, p0, p1);
54  }
55 
56  template<unsigned int args, typename Tag, typename F>
59  const funct::Parameter & p0,
60  const funct::Parameter & p1,
61  const funct::Parameter & p2) {
67  return fun;
68  }
69 
70  template<unsigned int args, typename F>
72  function(F& f,
73  const funct::Parameter & p0,
74  const funct::Parameter & p1,
75  const funct::Parameter & p2) {
76  return function<args, helper::null_t>(f, p0, p1, p2);
77  }
78 
79  template<unsigned int args, typename Tag, typename F>
82  const funct::Parameter & p0,
83  const funct::Parameter & p1,
84  const funct::Parameter & p2,
85  const funct::Parameter & p3) {
92  return fun;
93  }
94 
95  template<unsigned int args, typename F>
97  function(F& f,
98  const funct::Parameter & p0,
99  const funct::Parameter & p1,
100  const funct::Parameter & p2,
101  const funct::Parameter & p3) {
102  return function<args, helper::null_t>(f, p0, p1, p2, p3);
103  }
104 
105  template<unsigned int args, typename Tag, typename F>
108  const funct::Parameter & p0,
109  const funct::Parameter & p1,
110  const funct::Parameter & p2,
111  const funct::Parameter & p3,
112  const funct::Parameter & p4) {
120  return fun;
121  }
122 
123  template<unsigned int args, typename F>
125  function(F& f,
126  const funct::Parameter & p0,
127  const funct::Parameter & p1,
128  const funct::Parameter & p2,
129  const funct::Parameter & p3,
130  const funct::Parameter & p4) {
131  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4);
132  }
133 
134  template<unsigned int args, typename Tag, typename F>
137  const funct::Parameter & p0,
138  const funct::Parameter & p1,
139  const funct::Parameter & p2,
140  const funct::Parameter & p3,
141  const funct::Parameter & p4,
142  const funct::Parameter & p5) {
151  return fun;
152  }
153 
154  template<unsigned int args, typename F>
156  function(F& f,
157  const funct::Parameter & p0,
158  const funct::Parameter & p1,
159  const funct::Parameter & p2,
160  const funct::Parameter & p3,
161  const funct::Parameter & p4,
162  const funct::Parameter & p5) {
163  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5);
164  }
165 
166  template<unsigned int args, typename Tag, typename F>
169  const funct::Parameter & p0,
170  const funct::Parameter & p1,
171  const funct::Parameter & p2,
172  const funct::Parameter & p3,
173  const funct::Parameter & p4,
174  const funct::Parameter & p5,
175  const funct::Parameter & p6) {
185  return fun;
186  }
187 
188  template<unsigned int args, typename F>
190  function(F& f,
191  const funct::Parameter & p0,
192  const funct::Parameter & p1,
193  const funct::Parameter & p2,
194  const funct::Parameter & p3,
195  const funct::Parameter & p4,
196  const funct::Parameter & p5,
197  const funct::Parameter & p6) {
198  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6);
199  }
200 
201  template<unsigned int args, typename Tag, typename F>
204  const funct::Parameter & p0,
205  const funct::Parameter & p1,
206  const funct::Parameter & p2,
207  const funct::Parameter & p3,
208  const funct::Parameter & p4,
209  const funct::Parameter & p5,
210  const funct::Parameter & p6,
211  const funct::Parameter & p7) {
222  return fun;
223  }
224 
225  template<unsigned int args, typename F>
227  function(F& f,
228  const funct::Parameter & p0,
229  const funct::Parameter & p1,
230  const funct::Parameter & p2,
231  const funct::Parameter & p3,
232  const funct::Parameter & p4,
233  const funct::Parameter & p5,
234  const funct::Parameter & p6,
235  const funct::Parameter & p7) {
236  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7);
237  }
238 
239  template<unsigned int args, typename Tag, typename F>
242  const funct::Parameter & p0,
243  const funct::Parameter & p1,
244  const funct::Parameter & p2,
245  const funct::Parameter & p3,
246  const funct::Parameter & p4,
247  const funct::Parameter & p5,
248  const funct::Parameter & p6,
249  const funct::Parameter & p7,
250  const funct::Parameter & p8) {
262  return fun;
263  }
264 
265  template<unsigned int args, typename F>
267  function(F& f,
268  const funct::Parameter & p0,
269  const funct::Parameter & p1,
270  const funct::Parameter & p2,
271  const funct::Parameter & p3,
272  const funct::Parameter & p4,
273  const funct::Parameter & p5,
274  const funct::Parameter & p6,
275  const funct::Parameter & p7,
276  const funct::Parameter & p8) {
277  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8);
278  }
279 
280  template<unsigned int args, typename Tag, typename F>
283  const funct::Parameter & p0,
284  const funct::Parameter & p1,
285  const funct::Parameter & p2,
286  const funct::Parameter & p3,
287  const funct::Parameter & p4,
288  const funct::Parameter & p5,
289  const funct::Parameter & p6,
290  const funct::Parameter & p7,
291  const funct::Parameter & p8,
292  const funct::Parameter & p9) {
305  return fun;
306  }
307 
308  template<unsigned int args, typename F>
310  function(F& f,
311  const funct::Parameter & p0,
312  const funct::Parameter & p1,
313  const funct::Parameter & p2,
314  const funct::Parameter & p3,
315  const funct::Parameter & p4,
316  const funct::Parameter & p5,
317  const funct::Parameter & p6,
318  const funct::Parameter & p7,
319  const funct::Parameter & p8,
320  const funct::Parameter & p9) {
321  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9);
322  }
323 
324  template<unsigned int args, typename Tag, typename F>
327  const funct::Parameter & p0,
328  const funct::Parameter & p1,
329  const funct::Parameter & p2,
330  const funct::Parameter & p3,
331  const funct::Parameter & p4,
332  const funct::Parameter & p5,
333  const funct::Parameter & p6,
334  const funct::Parameter & p7,
335  const funct::Parameter & p8,
336  const funct::Parameter & p9,
337  const funct::Parameter & p10) {
351  return fun;
352  }
353 
354  template<unsigned int args, typename F>
356  function(F& f,
357  const funct::Parameter & p0,
358  const funct::Parameter & p1,
359  const funct::Parameter & p2,
360  const funct::Parameter & p3,
361  const funct::Parameter & p4,
362  const funct::Parameter & p5,
363  const funct::Parameter & p6,
364  const funct::Parameter & p7,
365  const funct::Parameter & p8,
366  const funct::Parameter & p9,
367  const funct::Parameter & p10) {
368  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
369  }
370 
371  template<unsigned int args, typename Tag, typename F>
374  const funct::Parameter & p0,
375  const funct::Parameter & p1,
376  const funct::Parameter & p2,
377  const funct::Parameter & p3,
378  const funct::Parameter & p4,
379  const funct::Parameter & p5,
380  const funct::Parameter & p6,
381  const funct::Parameter & p7,
382  const funct::Parameter & p8,
383  const funct::Parameter & p9,
384  const funct::Parameter & p10,
385  const funct::Parameter & p11) {
400  return fun;
401  }
402 
403  template<unsigned int args, typename F>
405  function(F& f,
406  const funct::Parameter & p0,
407  const funct::Parameter & p1,
408  const funct::Parameter & p2,
409  const funct::Parameter & p3,
410  const funct::Parameter & p4,
411  const funct::Parameter & p5,
412  const funct::Parameter & p6,
413  const funct::Parameter & p7,
414  const funct::Parameter & p8,
415  const funct::Parameter & p9,
416  const funct::Parameter & p10,
417  const funct::Parameter & p11) {
418  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
419  }
420 
421  template<unsigned int args, typename Tag, typename F>
424  const funct::Parameter & p0,
425  const funct::Parameter & p1,
426  const funct::Parameter & p2,
427  const funct::Parameter & p3,
428  const funct::Parameter & p4,
429  const funct::Parameter & p5,
430  const funct::Parameter & p6,
431  const funct::Parameter & p7,
432  const funct::Parameter & p8,
433  const funct::Parameter & p9,
434  const funct::Parameter & p10,
435  const funct::Parameter & p11,
436  const funct::Parameter & p12) {
452  return fun;
453  }
454 
455  template<unsigned int args, typename F>
457  function(F& f,
458  const funct::Parameter & p0,
459  const funct::Parameter & p1,
460  const funct::Parameter & p2,
461  const funct::Parameter & p3,
462  const funct::Parameter & p4,
463  const funct::Parameter & p5,
464  const funct::Parameter & p6,
465  const funct::Parameter & p7,
466  const funct::Parameter & p8,
467  const funct::Parameter & p9,
468  const funct::Parameter & p10,
469  const funct::Parameter & p11,
470  const funct::Parameter & p12) {
471  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
472  }
473 
474  template<unsigned int args, typename Tag, typename F>
477  const funct::Parameter & p0,
478  const funct::Parameter & p1,
479  const funct::Parameter & p2,
480  const funct::Parameter & p3,
481  const funct::Parameter & p4,
482  const funct::Parameter & p5,
483  const funct::Parameter & p6,
484  const funct::Parameter & p7,
485  const funct::Parameter & p8,
486  const funct::Parameter & p9,
487  const funct::Parameter & p10,
488  const funct::Parameter & p11,
489  const funct::Parameter & p12,
490  const funct::Parameter & p13) {
507  return fun;
508  }
509 
510  template<unsigned int args, typename F>
512  function(F& f,
513  const funct::Parameter & p0,
514  const funct::Parameter & p1,
515  const funct::Parameter & p2,
516  const funct::Parameter & p3,
517  const funct::Parameter & p4,
518  const funct::Parameter & p5,
519  const funct::Parameter & p6,
520  const funct::Parameter & p7,
521  const funct::Parameter & p8,
522  const funct::Parameter & p9,
523  const funct::Parameter & p10,
524  const funct::Parameter & p11,
525  const funct::Parameter & p12,
526  const funct::Parameter & p13) {
527  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
528  }
529 
530  template<unsigned int args, typename Tag, typename F>
533  const funct::Parameter & p0,
534  const funct::Parameter & p1,
535  const funct::Parameter & p2,
536  const funct::Parameter & p3,
537  const funct::Parameter & p4,
538  const funct::Parameter & p5,
539  const funct::Parameter & p6,
540  const funct::Parameter & p7,
541  const funct::Parameter & p8,
542  const funct::Parameter & p9,
543  const funct::Parameter & p10,
544  const funct::Parameter & p11,
545  const funct::Parameter & p12,
546  const funct::Parameter & p13,
547  const funct::Parameter & p14) {
565  return fun;
566  }
567 
568  template<unsigned int args, typename F>
570  function(F& f,
571  const funct::Parameter & p0,
572  const funct::Parameter & p1,
573  const funct::Parameter & p2,
574  const funct::Parameter & p3,
575  const funct::Parameter & p4,
576  const funct::Parameter & p5,
577  const funct::Parameter & p6,
578  const funct::Parameter & p7,
579  const funct::Parameter & p8,
580  const funct::Parameter & p9,
581  const funct::Parameter & p10,
582  const funct::Parameter & p11,
583  const funct::Parameter & p12,
584  const funct::Parameter & p13,
585  const funct::Parameter & p14) {
586  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14);
587  }
588 
589  template<unsigned int args, typename Tag, typename F>
592  const funct::Parameter & p0,
593  const funct::Parameter & p1,
594  const funct::Parameter & p2,
595  const funct::Parameter & p3,
596  const funct::Parameter & p4,
597  const funct::Parameter & p5,
598  const funct::Parameter & p6,
599  const funct::Parameter & p7,
600  const funct::Parameter & p8,
601  const funct::Parameter & p9,
602  const funct::Parameter & p10,
603  const funct::Parameter & p11,
604  const funct::Parameter & p12,
605  const funct::Parameter & p13,
606  const funct::Parameter & p14,
607  const funct::Parameter & p15) {
626  return fun;
627  }
628 
629  template<unsigned int args, typename F>
631  function(F& f,
632  const funct::Parameter & p0,
633  const funct::Parameter & p1,
634  const funct::Parameter & p2,
635  const funct::Parameter & p3,
636  const funct::Parameter & p4,
637  const funct::Parameter & p5,
638  const funct::Parameter & p6,
639  const funct::Parameter & p7,
640  const funct::Parameter & p8,
641  const funct::Parameter & p9,
642  const funct::Parameter & p10,
643  const funct::Parameter & p11,
644  const funct::Parameter & p12,
645  const funct::Parameter & p13,
646  const funct::Parameter & p14,
647  const funct::Parameter & p15) {
648  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15);
649  }
650 
651  template<unsigned int args, typename Tag, typename F>
654  const funct::Parameter & p0,
655  const funct::Parameter & p1,
656  const funct::Parameter & p2,
657  const funct::Parameter & p3,
658  const funct::Parameter & p4,
659  const funct::Parameter & p5,
660  const funct::Parameter & p6,
661  const funct::Parameter & p7,
662  const funct::Parameter & p8,
663  const funct::Parameter & p9,
664  const funct::Parameter & p10,
665  const funct::Parameter & p11,
666  const funct::Parameter & p12,
667  const funct::Parameter & p13,
668  const funct::Parameter & p14,
669  const funct::Parameter & p15,
670  const funct::Parameter & p16) {
690  return fun;
691  }
692 
693  template<unsigned int args, typename F>
695  function(F& f,
696  const funct::Parameter & p0,
697  const funct::Parameter & p1,
698  const funct::Parameter & p2,
699  const funct::Parameter & p3,
700  const funct::Parameter & p4,
701  const funct::Parameter & p5,
702  const funct::Parameter & p6,
703  const funct::Parameter & p7,
704  const funct::Parameter & p8,
705  const funct::Parameter & p9,
706  const funct::Parameter & p10,
707  const funct::Parameter & p11,
708  const funct::Parameter & p12,
709  const funct::Parameter & p13,
710  const funct::Parameter & p14,
711  const funct::Parameter & p15,
712  const funct::Parameter & p16) {
713  return function<args, helper::null_t>(f, p0, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13, p14, p15, p16);
714  }
715 
716  template<unsigned int args, typename Tag, typename F>
719  const funct::Parameter & p0,
720  const funct::Parameter & p1,
721  const funct::Parameter & p2,
722  const funct::Parameter & p3,
723  const funct::Parameter & p4,
724  const funct::Parameter & p5,
725  const funct::Parameter & p6,
726  const funct::Parameter & p7,
727  const funct::Parameter & p8,
728  const funct::Parameter & p9,
729  const funct::Parameter & p10,
730  const funct::Parameter & p11,
731  const funct::Parameter & p12,
732  const funct::Parameter & p13,
733  const funct::Parameter & p14,
734  const funct::Parameter & p15,
735  const funct::Parameter & p16,
736  const funct::Parameter & p17) {
757  return fun;
758  }
759 
760  template<unsigned int args, typename F>
762  function(F& f,
763  const funct::Parameter & p0,
764  const funct::Parameter & p1,
765  const funct::Parameter & p2,
766  const funct::Parameter & p3,
767  const funct::Parameter & p4,
768  const funct::Parameter & p5,
769  const funct::Parameter & p6,
770  const funct::Parameter & p7,
771  const funct::Parameter & p8,
772  const funct::Parameter & p9,
773  const funct::Parameter & p10,
774  const funct::Parameter & p11,
775  const funct::Parameter & p12,
776  const funct::Parameter & p13,
777  const funct::Parameter & p14,
778  const funct::Parameter & p15,
779  const funct::Parameter & p16,
780  const funct::Parameter & p17) {
781  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);
782  }
783 
784  template<unsigned int args, typename Tag, typename F>
787  const funct::Parameter & p0,
788  const funct::Parameter & p1,
789  const funct::Parameter & p2,
790  const funct::Parameter & p3,
791  const funct::Parameter & p4,
792  const funct::Parameter & p5,
793  const funct::Parameter & p6,
794  const funct::Parameter & p7,
795  const funct::Parameter & p8,
796  const funct::Parameter & p9,
797  const funct::Parameter & p10,
798  const funct::Parameter & p11,
799  const funct::Parameter & p12,
800  const funct::Parameter & p13,
801  const funct::Parameter & p14,
802  const funct::Parameter & p15,
803  const funct::Parameter & p16,
804  const funct::Parameter & p17,
805  const funct::Parameter & p18) {
827  return fun;
828  }
829 
830  template<unsigned int args, typename F>
832  function(F& f,
833  const funct::Parameter & p0,
834  const funct::Parameter & p1,
835  const funct::Parameter & p2,
836  const funct::Parameter & p3,
837  const funct::Parameter & p4,
838  const funct::Parameter & p5,
839  const funct::Parameter & p6,
840  const funct::Parameter & p7,
841  const funct::Parameter & p8,
842  const funct::Parameter & p9,
843  const funct::Parameter & p10,
844  const funct::Parameter & p11,
845  const funct::Parameter & p12,
846  const funct::Parameter & p13,
847  const funct::Parameter & p14,
848  const funct::Parameter & p15,
849  const funct::Parameter & p16,
850  const funct::Parameter & p17,
851  const funct::Parameter & p18) {
852  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);
853  }
854 
855  template<unsigned int args, typename Tag, typename F>
858  const funct::Parameter & p0,
859  const funct::Parameter & p1,
860  const funct::Parameter & p2,
861  const funct::Parameter & p3,
862  const funct::Parameter & p4,
863  const funct::Parameter & p5,
864  const funct::Parameter & p6,
865  const funct::Parameter & p7,
866  const funct::Parameter & p8,
867  const funct::Parameter & p9,
868  const funct::Parameter & p10,
869  const funct::Parameter & p11,
870  const funct::Parameter & p12,
871  const funct::Parameter & p13,
872  const funct::Parameter & p14,
873  const funct::Parameter & p15,
874  const funct::Parameter & p16,
875  const funct::Parameter & p17,
876  const funct::Parameter & p18,
877  const funct::Parameter & p19) {
900  return fun;
901  }
902 
903  template<unsigned int args, typename F>
905  function(F& f,
906  const funct::Parameter & p0,
907  const funct::Parameter & p1,
908  const funct::Parameter & p2,
909  const funct::Parameter & p3,
910  const funct::Parameter & p4,
911  const funct::Parameter & p5,
912  const funct::Parameter & p6,
913  const funct::Parameter & p7,
914  const funct::Parameter & p8,
915  const funct::Parameter & p9,
916  const funct::Parameter & p10,
917  const funct::Parameter & p11,
918  const funct::Parameter & p12,
919  const funct::Parameter & p13,
920  const funct::Parameter & p14,
921  const funct::Parameter & p15,
922  const funct::Parameter & p16,
923  const funct::Parameter & p17,
924  const funct::Parameter & p18,
925  const funct::Parameter & p19) {
926  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);
927  }
928 
929  template<unsigned int args, typename Tag, typename F>
931  function_t(F& f, const std::vector<funct::Parameter> & pars) {
934  std::vector<funct::Parameter>::const_iterator i,
935  b = pars.begin(), e = pars.end();
936  for(i = b; i != e; ++i)
938  return fun;
939  }
940 
941  template<unsigned int args, typename F>
943  function(F& f, const std::vector<funct::Parameter> & pars) {
944  return function_t<args, helper::null_t>(f, pars);
945  }
946 
947  template<unsigned int args, typename Tag, typename F>
949  function_t(F& f, const std::vector<boost::shared_ptr<double> > & pars) {
952  std::vector<boost::shared_ptr<double> >::const_iterator i,
953  b = pars.begin(), e = pars.end();
954  for(i = b; i != e; ++i)
956  return fun;
957  }
958 
959  template<unsigned int args, typename F>
961  function(F& f, const std::vector<boost::shared_ptr<double> > & pars) {
962  return function_t<args, helper::null_t>(f, pars);
963  }
964 
965 }
966 
967 #endif
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:9
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