1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 //_________________________________________________________________________
19 // Utility Class for Neural Network fit
21 // currently uses 5 input neurons
22 // network configured via TMultiLayerPerceptron
24 //*-- Author: Paola La Rocca (Catania)
27 #include "AliCaloNeuralFit.h"
31 Double_t AliCaloNeuralFit::Value
32 (int index, Double_t in0, Double_t in1, Double_t in2, Double_t in3, Double_t in4)
35 // Compute the neural network answer,
36 // given the input values (taken from the signal TGraph)
47 return Neuron0x945d4f0();
49 return Neuron0x945f490();
55 Double_t AliCaloNeuralFit::Neuron0x945cbe8() const
59 // Just return activation value externally setted.
65 Double_t AliCaloNeuralFit::Neuron0x945cd78() const
69 // Just return activation value externally setted.
75 Double_t AliCaloNeuralFit::Neuron0x945cf50() const
79 // Just return activation value externally setted.
85 Double_t AliCaloNeuralFit::Neuron0x945d128() const
89 // Just return activation value externally setted.
95 Double_t AliCaloNeuralFit::Neuron0x945d300() const
99 // Just return activation value externally setted.
105 Double_t AliCaloNeuralFit::Input0x945d620() const
108 // Hidden/Output neuron
109 // Compute the activation from linear combination of
110 // all neurons going into this, each one times its synaptic weight
113 Double_t input = -0.508174;
114 input += Synapse0x943edb8();
115 input += Synapse0x945d7d0();
116 input += Synapse0x945d7f8();
117 input += Synapse0x945d820();
118 input += Synapse0x945d848();
122 Double_t AliCaloNeuralFit::Neuron0x945d620() const
125 // Hidden/Output neuron
126 // Return computed activation
128 Double_t input = Input0x945d620();
129 return (tanh(input) * 1)+0;
132 Double_t AliCaloNeuralFit::Input0x945d870() const
135 // Hidden/Output neuron
136 // Compute the activation from linear combination of
137 // all neurons going into this, each one times its synaptic weight
139 Double_t input = 0.29145;
140 input += Synapse0x945da68();
141 input += Synapse0x945da90();
142 input += Synapse0x945dab8();
143 input += Synapse0x945dae0();
144 input += Synapse0x945db08();
148 Double_t AliCaloNeuralFit::Neuron0x945d870() const
151 // Hidden/Output neuron
152 // Return computed activation
154 Double_t input = Input0x945d870();
155 return (tanh(input) * 1)+0;
158 Double_t AliCaloNeuralFit::Input0x945db30() const
161 // Hidden/Output neuron
162 // Compute the activation from linear combination of
163 // all neurons going into this, each one times its synaptic weight
165 Double_t input = -0.132489;
166 input += Synapse0x945dd28();
167 input += Synapse0x945dd50();
168 input += Synapse0x945dd78();
169 input += Synapse0x945dda0();
170 input += Synapse0x945ddc8();
174 Double_t AliCaloNeuralFit::Neuron0x945db30() const
177 // Hidden/Output neuron
178 // Return computed activation
180 Double_t input = Input0x945db30();
181 return (tanh(input) * 1)+0;
184 Double_t AliCaloNeuralFit::Input0x945ddf0() const
187 // Hidden/Output neuron
188 // Compute the activation from linear combination of
189 // all neurons going into this, each one times its synaptic weight
191 Double_t input = -1.12891;
192 input += Synapse0x945dfe8();
193 input += Synapse0x945e010();
194 input += Synapse0x945e0c0();
195 input += Synapse0x945e0e8();
196 input += Synapse0x945e110();
200 Double_t AliCaloNeuralFit::Neuron0x945ddf0() const
203 // Hidden/Output neuron
204 // Return computed activation
206 Double_t input = Input0x945ddf0();
207 return (tanh(input) * 1)+0;
210 Double_t AliCaloNeuralFit::Input0x945e138() const
213 // Hidden/Output neuron
214 // Compute the activation from linear combination of
215 // all neurons going into this, each one times its synaptic weight
217 Double_t input = 0.576896;
218 input += Synapse0x945e2e8();
219 input += Synapse0x945e310();
220 input += Synapse0x945e338();
221 input += Synapse0x945e360();
222 input += Synapse0x945e388();
226 Double_t AliCaloNeuralFit::Neuron0x945e138() const
229 // Hidden/Output neuron
230 // Return computed activation
232 Double_t input = Input0x945e138();
233 return (tanh(input) * 1)+0;
236 Double_t AliCaloNeuralFit::Input0x945e3b0() const
239 // Hidden/Output neuron
240 // Compute the activation from linear combination of
241 // all neurons going into this, each one times its synaptic weight
243 Double_t input = 0.654194;
244 input += Synapse0x945e5a8();
245 input += Synapse0x945e5d0();
246 input += Synapse0x945e5f8();
247 input += Synapse0x945e620();
248 input += Synapse0x945e648();
252 Double_t AliCaloNeuralFit::Neuron0x945e3b0() const
255 // Hidden/Output neuron
256 // Return computed activation
258 Double_t input = Input0x945e3b0();
259 return (tanh(input) * 1)+0;
262 Double_t AliCaloNeuralFit::Input0x945e670() const
265 // Hidden/Output neuron
266 // Compute the activation from linear combination of
267 // all neurons going into this, each one times its synaptic weight
269 Double_t input = -0.356397;
270 input += Synapse0x945e868();
271 input += Synapse0x945e890();
272 input += Synapse0x945e8b8();
273 input += Synapse0x945e038();
274 input += Synapse0x945e060();
278 Double_t AliCaloNeuralFit::Neuron0x945e670() const
281 // Hidden/Output neuron
282 // Return computed activation
284 Double_t input = Input0x945e670();
285 return (tanh(input) * 1)+0;
288 Double_t AliCaloNeuralFit::Input0x945e9e8() const
291 // Hidden/Output neuron
292 // Compute the activation from linear combination of
293 // all neurons going into this, each one times its synaptic weight
295 Double_t input = -0.798487;
296 input += Synapse0x945ebe0();
297 input += Synapse0x945ec08();
298 input += Synapse0x945ec30();
299 input += Synapse0x945ec58();
300 input += Synapse0x945ec80();
304 Double_t AliCaloNeuralFit::Neuron0x945e9e8() const
307 // Hidden/Output neuron
308 // Return computed activation
310 Double_t input = Input0x945e9e8();
311 return (tanh(input) * 1)+0;
314 Double_t AliCaloNeuralFit::Input0x945eca8() const
317 // Hidden/Output neuron
318 // Compute the activation from linear combination of
319 // all neurons going into this, each one times its synaptic weight
321 Double_t input = -0.934985;
322 input += Synapse0x945eea0();
323 input += Synapse0x945eec8();
324 input += Synapse0x945eef0();
325 input += Synapse0x945ef18();
326 input += Synapse0x945ef40();
330 Double_t AliCaloNeuralFit::Neuron0x945eca8() const
333 // Hidden/Output neuron
334 // Return computed activation
336 Double_t input = Input0x945eca8();
337 return (tanh(input) * 1)+0;
340 Double_t AliCaloNeuralFit::Input0x945ef68() const
343 // Hidden/Output neuron
344 // Compute the activation from linear combination of
345 // all neurons going into this, each one times its synaptic weight
347 Double_t input = -0.457775;
348 input += Synapse0x945f160();
349 input += Synapse0x945f188();
350 input += Synapse0x945f1b0();
351 input += Synapse0x945f1d8();
352 input += Synapse0x945f200();
356 Double_t AliCaloNeuralFit::Neuron0x945ef68() const
359 // Hidden/Output neuron
360 // Return computed activation
362 Double_t input = Input0x945ef68();
363 return (tanh(input) * 1)+0;
366 Double_t AliCaloNeuralFit::Input0x945d4f0() const
369 // Hidden/Output neuron
370 // Compute the activation from linear combination of
371 // all neurons going into this, each one times its synaptic weight
373 Double_t input = 0.849942;
374 input += Synapse0x945f300();
375 input += Synapse0x945f328();
376 input += Synapse0x945f350();
377 input += Synapse0x945f378();
378 input += Synapse0x945f3a0();
379 input += Synapse0x945f3c8();
380 input += Synapse0x945f3f0();
381 input += Synapse0x945f418();
382 input += Synapse0x945f440();
383 input += Synapse0x945f468();
387 Double_t AliCaloNeuralFit::Neuron0x945d4f0() const
390 // Hidden/Output neuron
391 // Return computed activation
393 Double_t input = Input0x945d4f0();
394 return (input * 1)+0;
397 Double_t AliCaloNeuralFit::Input0x945f490() const
400 // Hidden/Output neuron
401 // Compute the activation from linear combination of
402 // all neurons going into this, each one times its synaptic weight
404 Double_t input = -0.147416;
405 input += Synapse0x945f690();
406 input += Synapse0x945f6b8();
407 input += Synapse0x945f6e0();
408 input += Synapse0x945f708();
409 input += Synapse0x945f730();
410 input += Synapse0x936a1f0();
411 input += Synapse0x943ee18();
412 input += Synapse0x945cb70();
413 input += Synapse0x945cb98();
414 input += Synapse0x945cbc0();
418 Double_t AliCaloNeuralFit::Neuron0x945f490() const
421 // Hidden/Output neuron
422 // Return computed activation
424 Double_t input = Input0x945f490();
425 return (input * 1)+0;
428 Double_t AliCaloNeuralFit::Synapse0x943edb8() const
431 // Synaptic connection
432 // Multiplies input times synaptic weight
434 return (Neuron0x945cbe8()*-0.104546);
437 Double_t AliCaloNeuralFit::Synapse0x945d7d0() const
440 // Synaptic connection
441 // Multiplies input times synaptic weight
443 return (Neuron0x945cd78()*-0.0905177);
446 Double_t AliCaloNeuralFit::Synapse0x945d7f8() const
449 // Synaptic connection
450 // Multiplies input times synaptic weight
452 return (Neuron0x945cf50()*-0.143637);
455 Double_t AliCaloNeuralFit::Synapse0x945d820() const
458 // Synaptic connection
459 // Multiplies input times synaptic weight
461 return (Neuron0x945d128()*-0.413064);
464 Double_t AliCaloNeuralFit::Synapse0x945d848() const
467 // Synaptic connection
468 // Multiplies input times synaptic weight
470 return (Neuron0x945d300()*0.883744);
473 Double_t AliCaloNeuralFit::Synapse0x945da68() const
476 // Synaptic connection
477 // Multiplies input times synaptic weight
479 return (Neuron0x945cbe8()*-1.26724);
482 Double_t AliCaloNeuralFit::Synapse0x945da90() const
485 // Synaptic connection
486 // Multiplies input times synaptic weight
488 return (Neuron0x945cd78()*-0.14136);
491 Double_t AliCaloNeuralFit::Synapse0x945dab8() const
494 // Synaptic connection
495 // Multiplies input times synaptic weight
497 return (Neuron0x945cf50()*0.27187);
500 Double_t AliCaloNeuralFit::Synapse0x945dae0() const
503 // Synaptic connection
504 // Multiplies input times synaptic weight
506 return (Neuron0x945d128()*0.563302);
509 Double_t AliCaloNeuralFit::Synapse0x945db08() const
512 // Synaptic connection
513 // Multiplies input times synaptic weight
515 return (Neuron0x945d300()*1.38006);
518 Double_t AliCaloNeuralFit::Synapse0x945dd28() const
521 // Synaptic connection
522 // Multiplies input times synaptic weight
524 return (Neuron0x945cbe8()*-0.235737);
527 Double_t AliCaloNeuralFit::Synapse0x945dd50() const
530 // Synaptic connection
531 // Multiplies input times synaptic weight
533 return (Neuron0x945cd78()*0.715314);
536 Double_t AliCaloNeuralFit::Synapse0x945dd78() const
539 // Synaptic connection
540 // Multiplies input times synaptic weight
542 return (Neuron0x945cf50()*-0.893506);
545 Double_t AliCaloNeuralFit::Synapse0x945dda0() const
548 // Synaptic connection
549 // Multiplies input times synaptic weight
551 return (Neuron0x945d128()*1.66689);
554 Double_t AliCaloNeuralFit::Synapse0x945ddc8() const
557 // Synaptic connection
558 // Multiplies input times synaptic weight
560 return (Neuron0x945d300()*0.433463);
563 Double_t AliCaloNeuralFit::Synapse0x945dfe8() const
566 // Synaptic connection
567 // Multiplies input times synaptic weight
569 return (Neuron0x945cbe8()*0.198835);
572 Double_t AliCaloNeuralFit::Synapse0x945e010() const
575 // Synaptic connection
576 // Multiplies input times synaptic weight
578 return (Neuron0x945cd78()*1.67429);
581 Double_t AliCaloNeuralFit::Synapse0x945e0c0() const
584 // Synaptic connection
585 // Multiplies input times synaptic weight
587 return (Neuron0x945cf50()*-1.19328);
590 Double_t AliCaloNeuralFit::Synapse0x945e0e8() const
593 // Synaptic connection
594 // Multiplies input times synaptic weight
596 return (Neuron0x945d128()*2.5465);
599 Double_t AliCaloNeuralFit::Synapse0x945e110() const
602 // Synaptic connection
603 // Multiplies input times synaptic weight
605 return (Neuron0x945d300()*0.153072);
608 Double_t AliCaloNeuralFit::Synapse0x945e2e8() const
611 // Synaptic connection
612 // Multiplies input times synaptic weight
614 return (Neuron0x945cbe8()*0.0815823);
617 Double_t AliCaloNeuralFit::Synapse0x945e310() const
620 // Synaptic connection
621 // Multiplies input times synaptic weight
623 return (Neuron0x945cd78()*0.0316826);
626 Double_t AliCaloNeuralFit::Synapse0x945e338() const
629 // Synaptic connection
630 // Multiplies input times synaptic weight
632 return (Neuron0x945cf50()*0.617448);
635 Double_t AliCaloNeuralFit::Synapse0x945e360() const
638 // Synaptic connection
639 // Multiplies input times synaptic weight
641 return (Neuron0x945d128()*-0.749993);
644 Double_t AliCaloNeuralFit::Synapse0x945e388() const
647 // Synaptic connection
648 // Multiplies input times synaptic weight
650 return (Neuron0x945d300()*-0.980764);
653 Double_t AliCaloNeuralFit::Synapse0x945e5a8() const
656 // Synaptic connection
657 // Multiplies input times synaptic weight
659 return (Neuron0x945cbe8()*-0.453657);
662 Double_t AliCaloNeuralFit::Synapse0x945e5d0() const
665 // Synaptic connection
666 // Multiplies input times synaptic weight
668 return (Neuron0x945cd78()*0.146578);
671 Double_t AliCaloNeuralFit::Synapse0x945e5f8() const
674 // Synaptic connection
675 // Multiplies input times synaptic weight
677 return (Neuron0x945cf50()*0.123041);
680 Double_t AliCaloNeuralFit::Synapse0x945e620() const
683 // Synaptic connection
684 // Multiplies input times synaptic weight
686 return (Neuron0x945d128()*0.189871);
689 Double_t AliCaloNeuralFit::Synapse0x945e648() const
692 // Synaptic connection
693 // Multiplies input times synaptic weight
695 return (Neuron0x945d300()*-0.153873);
698 Double_t AliCaloNeuralFit::Synapse0x945e868() const
701 // Synaptic connection
702 // Multiplies input times synaptic weight
704 return (Neuron0x945cbe8()*-0.0569668);
707 Double_t AliCaloNeuralFit::Synapse0x945e890() const
710 // Synaptic connection
711 // Multiplies input times synaptic weight
713 return (Neuron0x945cd78()*-0.0208438);
716 Double_t AliCaloNeuralFit::Synapse0x945e8b8() const
719 // Synaptic connection
720 // Multiplies input times synaptic weight
722 return (Neuron0x945cf50()*-0.662575);
725 Double_t AliCaloNeuralFit::Synapse0x945e038() const
728 // Synaptic connection
729 // Multiplies input times synaptic weight
731 return (Neuron0x945d128()*-0.308952);
734 Double_t AliCaloNeuralFit::Synapse0x945e060() const
737 // Synaptic connection
738 // Multiplies input times synaptic weight
740 return (Neuron0x945d300()*-0.0591419);
743 Double_t AliCaloNeuralFit::Synapse0x945ebe0() const
746 // Synaptic connection
747 // Multiplies input times synaptic weight
749 return (Neuron0x945cbe8()*0.203333);
752 Double_t AliCaloNeuralFit::Synapse0x945ec08() const
755 // Synaptic connection
756 // Multiplies input times synaptic weight
758 return (Neuron0x945cd78()*-0.210458);
761 Double_t AliCaloNeuralFit::Synapse0x945ec30() const
764 // Synaptic connection
765 // Multiplies input times synaptic weight
767 return (Neuron0x945cf50()*-0.46208);
770 Double_t AliCaloNeuralFit::Synapse0x945ec58() const
773 // Synaptic connection
774 // Multiplies input times synaptic weight
776 return (Neuron0x945d128()*-0.213809);
779 Double_t AliCaloNeuralFit::Synapse0x945ec80() const
782 // Synaptic connection
783 // Multiplies input times synaptic weight
785 return (Neuron0x945d300()*0.652572);
788 Double_t AliCaloNeuralFit::Synapse0x945eea0() const
791 // Synaptic connection
792 // Multiplies input times synaptic weight
794 return (Neuron0x945cbe8()*0.53005);
797 Double_t AliCaloNeuralFit::Synapse0x945eec8() const
800 // Synaptic connection
801 // Multiplies input times synaptic weight
803 return (Neuron0x945cd78()*1.97055);
806 Double_t AliCaloNeuralFit::Synapse0x945eef0() const
809 // Synaptic connection
810 // Multiplies input times synaptic weight
812 return (Neuron0x945cf50()*-0.934772);
815 Double_t AliCaloNeuralFit::Synapse0x945ef18() const
818 // Synaptic connection
819 // Multiplies input times synaptic weight
821 return (Neuron0x945d128()*-0.253289);
824 Double_t AliCaloNeuralFit::Synapse0x945ef40() const
827 // Synaptic connection
828 // Multiplies input times synaptic weight
830 return (Neuron0x945d300()*-0.190109);
833 Double_t AliCaloNeuralFit::Synapse0x945f160() const
836 // Synaptic connection
837 // Multiplies input times synaptic weight
839 return (Neuron0x945cbe8()*0.111492);
842 Double_t AliCaloNeuralFit::Synapse0x945f188() const
845 // Synaptic connection
846 // Multiplies input times synaptic weight
848 return (Neuron0x945cd78()*0.928076);
851 Double_t AliCaloNeuralFit::Synapse0x945f1b0() const
854 // Synaptic connection
855 // Multiplies input times synaptic weight
857 return (Neuron0x945cf50()*0.178153);
860 Double_t AliCaloNeuralFit::Synapse0x945f1d8() const
863 // Synaptic connection
864 // Multiplies input times synaptic weight
866 return (Neuron0x945d128()*-0.750558);
869 Double_t AliCaloNeuralFit::Synapse0x945f200() const
872 // Synaptic connection
873 // Multiplies input times synaptic weight
875 return (Neuron0x945d300()*-1.40984);
878 Double_t AliCaloNeuralFit::Synapse0x945f300() const
881 // Synaptic connection
882 // Multiplies input times synaptic weight
884 return (Neuron0x945d620()*-0.838377);
887 Double_t AliCaloNeuralFit::Synapse0x945f328() const
890 // Synaptic connection
891 // Multiplies input times synaptic weight
893 return (Neuron0x945d870()*0.191143);
896 Double_t AliCaloNeuralFit::Synapse0x945f350() const
899 // Synaptic connection
900 // Multiplies input times synaptic weight
902 return (Neuron0x945db30()*-0.453988);
905 Double_t AliCaloNeuralFit::Synapse0x945f378() const
908 // Synaptic connection
909 // Multiplies input times synaptic weight
911 return (Neuron0x945ddf0()*-0.520562);
914 Double_t AliCaloNeuralFit::Synapse0x945f3a0() const
917 // Synaptic connection
918 // Multiplies input times synaptic weight
920 return (Neuron0x945e138()*-0.995398);
923 Double_t AliCaloNeuralFit::Synapse0x945f3c8() const
926 // Synaptic connection
927 // Multiplies input times synaptic weight
929 return (Neuron0x945e3b0()*-0.114216);
932 Double_t AliCaloNeuralFit::Synapse0x945f3f0() const
935 // Synaptic connection
936 // Multiplies input times synaptic weight
938 return (Neuron0x945e670()*-0.72899);
941 Double_t AliCaloNeuralFit::Synapse0x945f418() const
944 // Synaptic connection
945 // Multiplies input times synaptic weight
947 return (Neuron0x945e9e8()*-0.453087);
950 Double_t AliCaloNeuralFit::Synapse0x945f440() const
953 // Synaptic connection
954 // Multiplies input times synaptic weight
956 return (Neuron0x945eca8()*0.0891431);
959 Double_t AliCaloNeuralFit::Synapse0x945f468() const
962 // Synaptic connection
963 // Multiplies input times synaptic weight
965 return (Neuron0x945ef68()*0.679937);
968 Double_t AliCaloNeuralFit::Synapse0x945f690() const
971 // Synaptic connection
972 // Multiplies input times synaptic weight
974 return (Neuron0x945d620()*0.806704);
977 Double_t AliCaloNeuralFit::Synapse0x945f6b8() const
980 // Synaptic connection
981 // Multiplies input times synaptic weight
983 return (Neuron0x945d870()*-1.27447);
986 Double_t AliCaloNeuralFit::Synapse0x945f6e0() const
989 // Synaptic connection
990 // Multiplies input times synaptic weight
992 return (Neuron0x945db30()*1.0306);
995 Double_t AliCaloNeuralFit::Synapse0x945f708() const
998 // Synaptic connection
999 // Multiplies input times synaptic weight
1001 return (Neuron0x945ddf0()*2.09234);
1004 Double_t AliCaloNeuralFit::Synapse0x945f730() const
1007 // Synaptic connection
1008 // Multiplies input times synaptic weight
1010 return (Neuron0x945e138()*0.0643316);
1013 Double_t AliCaloNeuralFit::Synapse0x936a1f0() const
1016 // Synaptic connection
1017 // Multiplies input times synaptic weight
1019 return (Neuron0x945e3b0()*-0.204933);
1022 Double_t AliCaloNeuralFit::Synapse0x943ee18() const
1025 // Synaptic connection
1026 // Multiplies input times synaptic weight
1028 return (Neuron0x945e670()*0.423604);
1031 Double_t AliCaloNeuralFit::Synapse0x945cb70() const
1034 // Synaptic connection
1035 // Multiplies input times synaptic weight
1037 return (Neuron0x945e9e8()*1.00527);
1040 Double_t AliCaloNeuralFit::Synapse0x945cb98() const
1043 // Synaptic connection
1044 // Multiplies input times synaptic weight
1046 return (Neuron0x945eca8()*-1.54485);
1049 Double_t AliCaloNeuralFit::Synapse0x945cbc0() const
1052 // Synaptic connection
1053 // Multiplies input times synaptic weight
1055 return (Neuron0x945ef68()*0.540381);