diff --git a/INSTALL b/INSTALL
index acd0b7ebbddf099bb8557d15c723ab89e84e1eba..5f4fa705f21ec3375cb06ba952f17382b93c083a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -28,9 +28,10 @@ I) REQUIREMENTS
 
 II) WORKING CONFIGURATIONS
 	The NPTool package has been mainly tested (and developped) with 
-	the two following configurations:
-	1) Mac OS X (10.5.7) + G4 (4.9.2) + CLHEP (2.0.4.2) + ROOT (5.22/00) + GSL ()
+	the following configurations:
+	1) Mac OS X (10.5.7) + G4 (4.9.2 and 4.9.3.b1) + CLHEP (2.0.4.2) + ROOT (5.22/00 and 5.24/00) + GSL ()
 	2) Linux Fedora (kernel 2.6.29) + G4 (4.9.1p3) + CLHEP (2.0.4.2) + ROOT (5.22/00) + GSL (1.12)
+	3) Linux Fedora (kernel 2.6.29) + G4 (4.9.2p2) + CLHEP (2.0.4.2) + ROOT (5.25/02) + GSL (1.12)
 	Please, report any working or non-working configuration.
 
 III) INSTALLATION
diff --git a/Inputs/CrossSection/9Li(d,p).txt b/Inputs/CrossSection/9Li(d,p).txt
new file mode 100644
index 0000000000000000000000000000000000000000..990d337d600e572e207806c4601838a61b4bfa91
--- /dev/null
+++ b/Inputs/CrossSection/9Li(d,p).txt
@@ -0,0 +1,73 @@
+   0.0		  0.5625 
+   2.500      0.5625    
+   5.000      0.5126
+   7.500      0.4400    
+   10.00      0.3576    
+   12.50      0.2777    
+   15.00      0.2090    
+   17.50      0.1542    
+   20.00      0.1124    
+   22.50      0.8230E-01
+   25.00      0.6235E-01
+   27.50      0.4957E-01
+   30.00      0.3973E-01
+   32.50      0.3012E-01
+   35.00      0.2102E-01
+   37.50      0.1382E-01
+   40.00      0.8849E-02
+   42.50      0.5495E-02
+   45.00      0.3248E-02
+   47.50      0.1931E-02
+   50.00      0.1310E-02
+   52.50      0.1027E-02
+   55.00      0.8610E-03
+   57.50      0.7619E-03
+   60.00      0.7002E-03
+   62.50      0.6196E-03
+   65.00      0.5018E-03
+   67.50      0.3850E-03
+   70.00      0.2985E-03
+   72.50      0.2351E-03
+   75.00      0.1775E-03
+   77.50      0.1254E-03
+   80.00      0.8818E-04
+   82.50      0.6599E-04
+   85.00      0.5158E-04
+   87.50      0.3920E-04
+   90.00      0.2942E-04
+   92.50      0.2407E-04
+   95.00      0.2225E-04
+   97.50      0.2153E-04
+   100.0      0.2032E-04
+   102.5      0.1965E-04
+   105.0      0.2056E-04
+   107.5      0.2278E-04
+   110.0      0.2474E-04
+   112.5      0.2588E-04
+   115.0      0.2744E-04
+   117.5      0.2992E-04
+   120.0      0.3240E-04
+   122.5      0.3335E-04
+   125.0      0.3324E-04
+   127.5      0.3343E-04
+   130.0      0.3451E-04
+   132.5      0.3613E-04
+   135.0      0.3783E-04
+   137.5      0.4010E-04
+   140.0      0.4281E-04
+   142.5      0.4557E-04
+   145.0      0.4781E-04
+   147.5      0.4930E-04
+   150.0      0.4997E-04
+   152.5      0.4978E-04
+   155.0      0.5003E-04
+   157.5      0.5155E-04
+   160.0      0.5415E-04
+   162.5      0.5615E-04
+   165.0      0.5711E-04
+   167.5      0.5915E-04
+   170.0      0.6297E-04
+   172.5      0.6685E-04
+   175.0      0.6678E-04
+   177.5      0.6329E-04
+   180.0      0.6145E-04
diff --git a/Inputs/CrossSection/flat.txt b/Inputs/CrossSection/flat.txt
index 3968c9853205e927f131021c5af5de2c8b5c0619..8ff95131d31b76632f13d5a153b2f52cd12614de 100644
--- a/Inputs/CrossSection/flat.txt
+++ b/Inputs/CrossSection/flat.txt
@@ -1,1800 +1,1801 @@
-  0.  1.8497963
-  0.100000001  1.85060704
-  0.200000003  1.85318649
-  0.300000012  1.85738742
-  0.400000006  1.86328328
-  0.5  1.87087452
-  0.600000024  1.88008702
-  0.699999988  1.890921
-  0.800000012  1.90337622
-  0.899999976  1.91730535
-  1.  1.93278253
-  1.10000002  1.9497335
-  1.20000005  1.96815848
-  1.29999995  1.98791003
-  1.39999998  2.00898838
-  1.5  2.03131938
-  1.60000002  2.0548296
-  1.70000005  2.07951927
-  1.79999995  2.10524058
-  1.89999998  2.13199353
-  2.  2.15963101
-  2.0999999  2.18807912
-  2.20000005  2.21741176
-  2.29999995  2.247334
-  2.4000001  2.27791953
-  2.5  2.309021
-  2.5999999  2.34049082
-  2.70000005  2.37240314
-  2.79999995  2.40453625
-  2.9000001  2.43689036
-  3.  2.46924472
-  3.0999999  2.50167274
-  3.20000005  2.53395343
-  3.29999995  2.56608653
-  3.4000001  2.59792495
-  3.5  2.62946844
-  3.5999999  2.66049623
-  3.70000005  2.69100809
-  3.79999995  2.72093034
-  3.9000001  2.75011539
-  4.  2.7785635
-  4.0999999  2.80612755
-  4.19999981  2.83280683
-  4.30000019  2.85845447
-  4.4000001  2.88299656
-  4.5  2.90635943
-  4.5999999  2.92854309
-  4.69999981  2.94940019
-  4.80000019  2.96893072
-  4.9000001  2.98706079
-  5.  3.00371718
-  5.0999999  3.0188992
-  5.19999981  3.03253388
-  5.30000019  3.04454708
-  5.4000001  3.05486488
-  5.5  3.06356144
-  5.5999999  3.07056308
-  5.69999981  3.07579589
-  5.80000019  3.07925963
-  5.9000001  3.08095479
-  6.  3.08080745
-  6.0999999  3.07889128
-  6.19999981  3.07513261
-  6.30000019  3.06960487
-  6.4000001  3.06216121
-  6.5  3.05294871
-  6.5999999  3.04189372
-  6.69999981  3.02907014
-  6.80000019  3.01447749
-  6.9000001  2.99804211
-  7.  2.97991204
-  7.0999999  2.96001315
-  7.19999981  2.93841887
-  7.30000019  2.91512966
-  7.4000001  2.89029288
-  7.5  2.86383462
-  7.5999999  2.83582854
-  7.69999981  2.80627489
-  7.80000019  2.77532077
-  7.9000001  2.74289298
-  8.  2.70913839
-  8.10000038  2.67413068
-  8.19999981  2.63779664
-  8.30000019  2.60035706
-  8.39999962  2.56173825
-  8.5  2.52208757
-  8.60000038  2.48140526
-  8.69999981  2.43976474
-  8.80000019  2.39723992
-  8.89999962  2.35397816
-  9.  2.30990529
-  9.10000038  2.26516962
-  9.19999981  2.21991754
-  9.30000019  2.17400241
-  9.39999962  2.12771916
-  9.5  2.08099318
-  9.60000038  2.0339725
-  9.69999981  1.98665726
-  9.80000019  1.93912077
-  9.89999962  1.89151049
-  10.  1.84382665
-  10.1000004  1.7961427
-  10.1999998  1.7486062
-  10.3000002  1.70114338
-  10.3999996  1.6539017
-  10.5  1.60688114
-  10.6000004  1.56022906
-  10.6999998  1.51394534
-  10.8000002  1.468104
-  10.8999996  1.42270482
-  11.  1.37789512
-  11.1000004  1.33367515
-  11.1999998  1.29011858
-  11.3000002  1.24729872
-  11.3999996  1.20514238
-  11.5  1.16379666
-  11.6000004  1.12326169
-  11.6999998  1.08361101
-  11.8000002  1.04491866
-  11.8999996  1.00711048
-  12.  0.970260501
-  12.1000004  0.93436861
-  12.1999998  0.899582207
-  12.3000002  0.86582762
-  12.3999996  0.833104789
-  12.5  0.801487505
-  12.6000004  0.770975709
-  12.6999998  0.741643071
-  12.8000002  0.71341598
-  12.8999996  0.686345935
-  13.  0.660433054
-  13.1000004  0.635684609
-  13.1999998  0.612107933
-  13.3000002  0.589703143
-  13.3999996  0.56847018
-  13.5  0.548401713
-  13.6000004  0.529505014
-  13.6999998  0.511772811
-  13.8000002  0.495182931
-  13.8999996  0.479735434
-  14.  0.465422869
-  14.1000004  0.452223212
-  14.1999998  0.440129012
-  14.3000002  0.429110885
-  14.3999996  0.419161379
-  14.5  0.410265803
-  14.6000004  0.402387261
-  14.6999998  0.395511061
-  14.8000002  0.389615029
-  14.8999996  0.384677142
-  15.  0.380660474
-  15.1000004  0.377550364
-  15.1999998  0.375309885
-  15.3000002  0.373916954
-  15.3999996  0.373342097
-  15.5  0.373541087
-  15.6000004  0.374506563
-  15.6999998  0.376186907
-  15.8000002  0.378560036
-  15.8999996  0.381596506
-  16.  0.385252029
-  16.1000004  0.389504492
-  16.2000008  0.394317091
-  16.2999992  0.399660349
-  16.3999996  0.405497402
-  16.5  0.411791384
-  16.6000004  0.418520182
-  16.7000008  0.4256396
-  16.7999992  0.433120161
-  16.8999996  0.440932333
-  17.  0.449046731
-  17.1000004  0.457426399
-  17.2000008  0.466041952
-  17.2999992  0.474856436
-  17.3999996  0.483855218
-  17.5  0.492986649
-  17.6000004  0.5022434
-  17.7000008  0.511581123
-  17.7999992  0.520985305
-  17.8999996  0.530411541
-  18.  0.5398525
-  18.1000004  0.549271345
-  18.2000008  0.558646023
-  18.2999992  0.56794697
-  18.3999996  0.577166796
-  18.5  0.586268783
-  18.6000004  0.59523803
-  18.7000008  0.604045212
-  18.7999992  0.612690151
-  18.8999996  0.621136248
-  19.  0.629375875
-  19.1000004  0.637387097
-  19.2000008  0.645155013
-  19.2999992  0.652665079
-  19.3999996  0.659909785
-  19.5  0.666874409
-  19.6000004  0.673544288
-  19.7000008  0.67990458
-  19.7999992  0.685955405
-  19.8999996  0.691681862
-  20.  0.697076678
-  20.1000004  0.702132523
-  20.2000008  0.706849337
-  20.2999992  0.711212337
-  20.3999996  0.715221643
-  20.5  0.718884528
-  20.6000004  0.722178936
-  20.7000008  0.7251122
-  20.7999992  0.72769171
-  20.8999996  0.729902685
-  21.  0.731759906
-  21.1000004  0.733256042
-  21.2000008  0.734391034
-  21.2999992  0.735179603
-  21.3999996  0.735614419
-  21.5  0.735702813
-  21.6000004  0.735444903
-  21.7000008  0.734855294
-  21.7999992  0.733934045
-  21.8999996  0.732695937
-  22.  0.731133461
-  22.1000004  0.729261458
-  22.2000008  0.727087319
-  22.2999992  0.724625766
-  22.3999996  0.72187674
-  22.5  0.718847692
-  22.6000004  0.715553284
-  22.7000008  0.712008297
-  22.7999992  0.708212733
-  22.8999996  0.704173982
-  23.  0.699914157
-  23.1000004  0.695440531
-  23.2000008  0.690760612
-  23.2999992  0.685881674
-  23.3999996  0.68082583
-  23.5  0.675593138
-  23.6000004  0.670198321
-  23.7000008  0.664648652
-  23.7999992  0.658966422
-  23.8999996  0.653151512
-  24.  0.647218645
-  24.1000004  0.641182601
-  24.2000008  0.635050774
-  24.2999992  0.628830492
-  24.3999996  0.62253648
-  24.5  0.616176188
-  24.6000004  0.609764338
-  24.7000008  0.603308201
-  24.7999992  0.596822619
-  24.8999996  0.590307474
-  25.  0.583785057
-  25.1000004  0.577247858
-  25.2000008  0.570725441
-  25.2999992  0.564210355
-  25.3999996  0.557717323
-  25.5  0.551246524
-  25.6000004  0.544819832
-  25.7000008  0.538444817
-  25.7999992  0.532113969
-  25.8999996  0.52584213
-  26.  0.519643962
-  26.1000004  0.513512075
-  26.2000008  0.507461369
-  26.2999992  0.501491606
-  26.3999996  0.495617777
-  26.5  0.489839673
-  26.6000004  0.484157383
-  26.7000008  0.478578299
-  26.7999992  0.473117143
-  26.8999996  0.467759162
-  27.  0.462519079
-  27.1000004  0.457396924
-  27.2000008  0.452400059
-  27.2999992  0.447528511
-  27.3999996  0.442782223
-  27.5  0.438161254
-  27.6000004  0.433672905
-  27.7000008  0.429309875
-  27.7999992  0.425086856
-  27.8999996  0.420996517
-  28.  0.417031437
-  28.1000004  0.413206398
-  28.2000008  0.40951404
-  28.2999992  0.405954331
-  28.3999996  0.402519912
-  28.5  0.399225503
-  28.6000004  0.396056414
-  28.7000008  0.393020004
-  28.7999992  0.390101463
-  28.8999996  0.387315631
-  29.  0.384655029
-  29.1000004  0.382112384
-  29.2000008  0.379680276
-  29.2999992  0.377373457
-  29.3999996  0.375177205
-  29.5  0.373091489
-  29.6000004  0.37111634
-  29.7000008  0.369244367
-  29.7999992  0.367468208
-  29.8999996  0.365795195
-  30.  0.364210635
-  30.1000004  0.36272189
-  30.2000008  0.361314237
-  30.2999992  0.359995008
-  30.3999996  0.358749479
-  30.5  0.357585013
-  30.6000004  0.356494248
-  30.7000008  0.355462462
-  30.7999992  0.354496986
-  30.8999996  0.35359785
-  31.  0.35274294
-  31.1000004  0.35194698
-  31.2000008  0.351195216
-  31.2999992  0.350487739
-  31.3999996  0.349824399
-  31.5  0.349190593
-  31.6000004  0.348593622
-  31.7000008  0.348018765
-  31.7999992  0.347466022
-  31.8999996  0.346942753
-  32.  0.346426845
-  32.0999985  0.345925689
-  32.2000008  0.345431894
-  32.2999992  0.344952852
-  32.4000015  0.344466418
-  32.5  0.343980014
-  32.5999985  0.34348622
-  32.7000008  0.342992425
-  32.7999992  0.342483908
-  32.9000015  0.341960639
-  33.  0.341415226
-  33.0999985  0.340855122
-  33.2000008  0.340272903
-  33.2999992  0.339668542
-  33.4000015  0.339034736
-  33.5  0.338371456
-  33.5999985  0.33767128
-  33.7000008  0.336941659
-  33.7999992  0.336175174
-  33.9000015  0.335371822
-  34.  0.334524274
-  34.0999985  0.33363989
-  34.2000008  0.332711279
-  34.2999992  0.331738442
-  34.4000015  0.330713987
-  34.5  0.329652727
-  34.5999985  0.328539848
-  34.7000008  0.327375382
-  34.7999992  0.326166719
-  34.9000015  0.324906439
-  35.  0.3235946
-  35.0999985  0.322231144
-  35.2000008  0.32081607
-  35.2999992  0.319349468
-  35.4000015  0.317831248
-  35.5  0.316261441
-  35.5999985  0.314640015
-  35.7000008  0.312974423
-  35.7999992  0.311249822
-  35.9000015  0.309473664
-  36.  0.307653278
-  36.0999985  0.305781305
-  36.2000008  0.303857714
-  36.2999992  0.301889926
-  36.4000015  0.299870551
-  36.5  0.297806948
-  36.5999985  0.29569912
-  36.7000008  0.293547094
-  36.7999992  0.291350812
-  36.9000015  0.289110363
-  37.  0.286833048
-  37.0999985  0.284511477
-  37.2000008  0.282160431
-  37.2999992  0.279765189
-  37.4000015  0.277340472
-  37.5  0.274878889
-  37.5999985  0.272380471
-  37.7000008  0.26985994
-  37.7999992  0.267309904
-  37.9000015  0.264730394
-  38.  0.262121409
-  38.0999985  0.259490341
-  38.2000008  0.25683713
-  38.2999992  0.254169196
-  38.4000015  0.251479149
-  38.5  0.248766959
-  38.5999985  0.246040076
-  38.7000008  0.243305817
-  38.7999992  0.240556791
-  38.9000015  0.237800404
-  39.  0.23502931
-  39.0999985  0.232258171
-  39.2000008  0.229472324
-  39.2999992  0.226693824
-  39.4000015  0.223907962
-  39.5  0.221122101
-  39.5999985  0.218343616
-  39.7000008  0.215557754
-  39.7999992  0.21278663
-  39.9000015  0.21001552
-  40.  0.207259133
-  40.0999985  0.204502761
-  40.2000008  0.201761112
-  40.2999992  0.199034214
-  40.4000015  0.196322054
-  40.5  0.193624645
-  40.5999985  0.19094196
-  40.7000008  0.188274011
-  40.7999992  0.185628191
-  40.9000015  0.182997108
-  41.  0.180388108
-  41.0999985  0.177808627
-  41.2000008  0.175243869
-  41.2999992  0.172708571
-  41.4000015  0.170195401
-  41.5  0.167711705
-  41.5999985  0.165250137
-  41.7000008  0.162825406
-  41.7999992  0.160422787
-  41.9000015  0.158042282
-  42.  0.155698612
-  42.0999985  0.153391808
-  42.2000008  0.151107103
-  42.2999992  0.148859262
-  42.4000015  0.146640897
-  42.5  0.144452006
-  42.5999985  0.142299965
-  42.7000008  0.140177399
-  42.7999992  0.138091683
-  42.9000015  0.136035457
-  43.  0.134023458
-  43.0999985  0.132033542
-  43.2000008  0.130087867
-  43.2999992  0.128171667
-  43.4000015  0.126284942
-  43.5  0.124442443
-  43.5999985  0.122629426
-  43.7000008  0.120853253
-  43.7999992  0.119106568
-  43.9000015  0.117396735
-  44.  0.115716368
-  44.0999985  0.114080228
-  44.2000008  0.112466194
-  44.2999992  0.110889018
-  44.4000015  0.109348685
-  44.5  0.107837833
-  44.5999985  0.106356464
-  44.7000008  0.104911946
-  44.7999992  0.103496902
-  44.9000015  0.102111347
-  45.  0.100762635
-  45.0999985  0.0994360372
-  45.2000008  0.0981462896
-  45.2999992  0.0968786478
-  45.4000015  0.095640488
-  45.5  0.0944318101
-  45.5999985  0.0932526067
-  45.7000008  0.0921028927
-  45.7999992  0.0909752771
-  45.9000015  0.0898697823
-  46.  0.0887937546
-  46.0999985  0.0877398476
-  46.2000008  0.0867080539
-  46.2999992  0.0857057273
-  46.4000015  0.0847255215
-  46.5  0.0837600529
-  46.5999985  0.0828240588
-  46.7000008  0.0819028094
-  46.7999992  0.0810036659
-  46.9000015  0.0801266357
-  47.  0.0792643502
-  47.0999985  0.078416802
-  47.2000008  0.0775913596
-  47.2999992  0.0767806545
-  47.4000015  0.0759920701
-  47.5  0.075210847
-  47.5999985  0.0744517371
-  47.7000008  0.0736999959
-  47.7999992  0.0729659498
-  47.9000015  0.0722436905
-  48.  0.0715339556
-  48.0999985  0.070836015
-  48.2000008  0.0701491311
-  48.2999992  0.0694733039
-  48.4000015  0.0688077882
-  48.5  0.0681511238
-  48.5999985  0.0675040334
-  48.7000008  0.0668650568
-  48.7999992  0.0662349239
-  48.9000015  0.0656121597
-  49.  0.0649960265
-  49.0999985  0.0643865317
-  49.2000008  0.063783668
-  49.2999992  0.0631866977
-  49.4000015  0.0625948831
-  49.5  0.0620074943
-  49.5999985  0.0614252612
-  49.7000008  0.0608474575
-  49.7999992  0.0602733307
-  49.9000015  0.0597028956
-  50.  0.0591354072
-  50.0999985  0.0585708618
-  50.2000008  0.0580092706
-  50.2999992  0.0574498884
-  50.4000015  0.0568927154
-  50.5  0.0563377552
-  50.5999985  0.0557842627
-  50.7000008  0.0552322529
-  50.7999992  0.0546817146
-  50.9000015  0.0541326478
-  51.  0.0535843223
-  51.0999985  0.0530367307
-  51.2000008  0.0524906144
-  51.2999992  0.0519444942
-  51.4000015  0.0513991155
-  51.5  0.0508544743
-  51.5999985  0.0503098331
-  51.7000008  0.0497659221
-  51.7999992  0.0492227562
-  51.9000015  0.0486795865
-  52.  0.0481364168
-  52.0999985  0.0475939848
-  52.2000008  0.0470515527
-  52.2999992  0.0465098582
-  52.4000015  0.0459689014
-  52.5  0.0454279408
-  52.5999985  0.0448877215
-  52.7000008  0.0443474986
-  52.7999992  0.0438087508
-  52.9000015  0.0432700068
-  53.  0.0427327342
-  53.0999985  0.0421961993
-  53.2000008  0.0416611359
-  53.2999992  0.04112681
-  53.4000015  0.0405932218
-  53.5  0.0400618464
-  53.5999985  0.0395319425
-  53.7000008  0.0390035138
-  53.7999992  0.0384765603
-  53.9000015  0.0379518159
-  54.  0.0374292806
-  54.0999985  0.0369089581
-  54.2000008  0.0363915861
-  54.2999992  0.0358764231
-  54.4000015  0.035363473
-  54.5  0.0348542035
-  54.5999985  0.0343471467
-  54.7000008  0.0338437781
-  54.7999992  0.03334409
-  54.9000015  0.0328473523
-  55.  0.0323550366
-  55.0999985  0.0318664052
-  55.2000008  0.031381458
-  55.2999992  0.030900199
-  55.4000015  0.0304240957
-  55.5  0.0299524162
-  55.5999985  0.0294851586
-  55.7000008  0.0290230606
-  55.7999992  0.0285653826
-  55.9000015  0.0281136017
-  56.  0.0276662428
-  56.0999985  0.0272247791
-  56.2000008  0.026788475
-  56.2999992  0.026358068
-  56.4000015  0.0259335563
-  56.5  0.0255142022
-  56.5999985  0.0251014829
-  56.7000008  0.0246946588
-  56.7999992  0.0242944676
-  56.9000015  0.0239009093
-  57.  0.0235132482
-  57.0999985  0.023132218
-  57.2000008  0.022757085
-  57.2999992  0.0223900601
-  57.4000015  0.0220289286
-  57.5  0.0216744319
-  57.5999985  0.0213273056
-  57.7000008  0.0209875479
-  57.7999992  0.020654425
-  57.9000015  0.0203286707
-  58.  0.0200095493
-  58.0999985  0.0196977984
-  58.2000008  0.019393418
-  58.2999992  0.019096408
-  58.4000015  0.0188067667
-  58.5  0.0185237583
-  58.5999985  0.0182488579
-  58.7000008  0.0179805886
-  58.7999992  0.0177196916
-  58.9000015  0.017466899
-  59.  0.017220743
-  59.0999985  0.0169819538
-  59.2000008  0.0167497993
-  59.2999992  0.016525751
-  59.4000015  0.0163083356
-  59.5  0.0160982907
-  59.5999985  0.0158956144
-  59.7000008  0.0156995729
-  59.7999992  0.0155109018
-  59.9000015  0.0153288618
-  60.  0.0151541941
-  60.0999985  0.0149854207
-  60.2000008  0.014824017
-  60.2999992  0.0146692479
-  60.4000015  0.0145211108
-  60.5  0.0143796066
-  60.5999985  0.0142439995
-  60.7000008  0.014115761
-  60.7999992  0.0139926821
-  60.9000015  0.013876236
-  61.  0.0137656862
-  61.0999985  0.0136610316
-  61.2000008  0.0135622742
-  61.2999992  0.0134694111
-  61.4000015  0.0133817084
-  61.5  0.013299902
-  61.5999985  0.0132232541
-  61.7000008  0.0131517649
-  61.7999992  0.0130854351
-  61.9000015  0.0130242631
-  62.  0.0129675148
-  62.0999985  0.0129159242
-  62.2000008  0.0128687574
-  62.2999992  0.0128260106
-  62.4000015  0.0127876876
-  62.5  0.0127537847
-  62.5999985  0.0127235679
-  62.7000008  0.0126977721
-  62.7999992  0.0126756635
-  62.9000015  0.0126572382
-  63.  0.0126424981
-  63.0999985  0.0126307057
-  63.2000008  0.0126225986
-  63.2999992  0.01261744
-  63.4000015  0.012615229
-  63.5  0.0126159657
-  63.5999985  0.0126196509
-  63.7000008  0.0126255471
-  63.7999992  0.012634391
-  63.9000015  0.0126454458
-  64.  0.0126587125
-  64.0999985  0.0126741892
-  64.1999969  0.0126911392
-  64.3000031  0.0127110388
-  64.4000015  0.0127316751
-  64.5  0.0127545223
-  64.5999985  0.0127788428
-  64.6999969  0.0128039001
-  64.8000031  0.0128311701
-  64.9000015  0.0128591759
-  65.  0.012888656
-  65.0999985  0.0129181352
-  65.1999969  0.0129498271
-  65.3000031  0.0129815182
-  65.4000015  0.0130139459
-  65.5  0.0130471103
-  65.5999985  0.0130802756
-  65.6999969  0.0131149152
-  65.8000031  0.0131488163
-  65.9000015  0.0131834559
-  66.  0.0132180946
-  66.0999985  0.0132534709
-  66.1999969  0.0132881096
-  66.3000031  0.0133227492
-  66.4000015  0.0133581245
-  66.5  0.0133920265
-  66.5999985  0.0134266661
-  66.6999969  0.0134605682
-  66.8000031  0.0134944692
-  66.9000015  0.0135276346
-  67.  0.0135607999
-  67.0999985  0.0135932276
-  67.1999969  0.0136249186
-  67.3000031  0.0136566097
-  67.4000015  0.0136868274
-  67.5  0.0137170432
-  67.5999985  0.0137465242
-  67.6999969  0.0137752667
-  67.8000031  0.0138032725
-  67.9000015  0.0138305416
-  68.  0.0138563365
-  68.0999985  0.0138821322
-  68.1999969  0.0139071904
-  68.3000031  0.0139307734
-  68.4000015  0.0139543572
-  68.5  0.0139764678
-  68.5999985  0.0139978407
-  68.6999969  0.0140184769
-  68.8000031  0.0140383756
-  68.9000015  0.0140575375
-  69.  0.0140752262
-  69.0999985  0.0140921772
-  69.1999969  0.0141083905
-  69.3000031  0.0141238682
-  69.4000015  0.0141386082
-  69.5  0.0141526107
-  69.5999985  0.0141658764
-  69.6999969  0.0141776688
-  69.8000031  0.0141894603
-  69.9000015  0.0141997784
-  70.  0.0142100966
-  70.0999985  0.0142189413
-  70.1999969  0.0142277852
-  70.3000031  0.0142351547
-  70.4000015  0.0142425252
-  70.5  0.0142484214
-  70.5999985  0.0142543167
-  70.6999969  0.0142594753
-  70.8000031  0.0142646348
-  70.9000015  0.0142683191
-  71.  0.0142720044
-  71.0999985  0.0142749529
-  71.1999969  0.0142779006
-  71.3000031  0.0142801115
-  71.4000015  0.0142815858
-  71.5  0.0142830592
-  71.5999985  0.0142837968
-  71.6999969  0.0142845334
-  71.8000031  0.0142845334
-  71.9000015  0.0142845334
-  72.  0.0142845334
-  72.0999985  0.0142837968
-  72.1999969  0.0142830592
-  72.3000031  0.0142823225
-  72.4000015  0.0142815858
-  72.5  0.0142801115
-  72.5999985  0.0142793749
-  72.6999969  0.0142779006
-  72.8000031  0.0142764263
-  72.9000015  0.0142756896
-  73.  0.0142742153
-  73.0999985  0.014272741
-  73.1999969  0.0142720044
-  73.3000031  0.0142705301
-  73.4000015  0.0142697934
-  73.5  0.0142690567
-  73.5999985  0.0142683191
-  73.6999969  0.0142675824
-  73.8000031  0.0142675824
-  73.9000015  0.0142675824
-  74.  0.0142675824
-  74.0999985  0.0142675824
-  74.1999969  0.0142683191
-  74.3000031  0.0142697934
-  74.4000015  0.0142705301
-  74.5  0.0142720044
-  74.5999985  0.0142742153
-  74.6999969  0.0142764263
-  74.8000031  0.0142786372
-  74.9000015  0.0142815858
-  75.  0.0142845334
-  75.0999985  0.0142882187
-  75.1999969  0.0142919039
-  75.3000031  0.0142963259
-  75.4000015  0.0143007478
-  75.5  0.0143059064
-  75.5999985  0.0143110659
-  75.6999969  0.0143169621
-  75.8000031  0.0143228583
-  75.9000015  0.0143294912
-  76.  0.0143361241
-  76.0999985  0.0143434936
-  76.1999969  0.0143508641
-  76.3000031  0.0143589713
-  76.4000015  0.0143670775
-  76.5  0.0143759213
-  76.5999985  0.0143847652
-  76.6999969  0.0143936099
-  76.8000031  0.0144031914
-  76.9000015  0.0144135095
-  77.  0.01442309
-  77.0999985  0.0144341439
-  77.1999969  0.014444462
-  77.3000031  0.0144555178
-  77.4000015  0.0144665726
-  77.5  0.0144776283
-  77.5999985  0.0144894207
-  77.6999969  0.0145012122
-  77.8000031  0.0145130046
-  77.9000015  0.0145255327
-  78.  0.0145373251
-  78.0999985  0.0145498533
-  78.1999969  0.0145623833
-  78.3000031  0.0145749114
-  78.4000015  0.0145874415
-  78.5  0.0145999696
-  78.5999985  0.0146124996
-  78.6999969  0.0146250278
-  78.8000031  0.0146375578
-  78.9000015  0.0146500859
-  79.  0.0146626141
-  79.0999985  0.0146751441
-  79.1999969  0.0146876723
-  79.3000031  0.0146994647
-  79.4000015  0.0147119947
-  79.5  0.0147237862
-  79.5999985  0.0147355786
-  79.6999969  0.0147466324
-  79.8000031  0.0147584248
-  79.9000015  0.0147694787
-  80.  0.0147805354
-  80.0999985  0.0147908526
-  80.1999969  0.0148011707
-  80.3000031  0.0148114888
-  80.4000015  0.0148210693
-  80.5  0.0148299132
-  80.5999985  0.0148394955
-  80.6999969  0.0148476018
-  80.8000031  0.0148564456
-  80.9000015  0.0148638161
-  81.  0.0148719233
-  81.0999985  0.0148785561
-  81.1999969  0.0148851881
-  81.3000031  0.0148910843
-  81.4000015  0.0148969805
-  81.5  0.01490214
-  81.5999985  0.0149072986
-  81.6999969  0.0149117205
-  81.8000031  0.0149154058
-  81.9000015  0.0149183543
-  82.  0.014921302
-  82.0999985  0.014923512
-  82.1999969  0.0149257239
-  82.3000031  0.0149264606
-  82.4000015  0.0149271982
-  82.5  0.0149279339
-  82.5999985  0.0149271982
-  82.6999969  0.0149264606
-  82.8000031  0.0149249863
-  82.9000015  0.0149227763
-  83.  0.0149205644
-  83.0999985  0.0149168801
-  83.1999969  0.0149139324
-  83.3000031  0.0149095105
-  83.4000015  0.01490435
-  83.5  0.0148991924
-  83.5999985  0.0148932962
-  83.6999969  0.0148874
-  83.8000031  0.0148800295
-  83.9000015  0.0148726599
-  84.  0.0148645537
-  84.0999985  0.0148564456
-  84.1999969  0.0148468651
-  84.3000031  0.0148372836
-  84.4000015  0.0148277031
-  84.5  0.0148166474
-  84.5999985  0.0148055935
-  84.6999969  0.0147945369
-  84.8000031  0.0147820087
-  84.9000015  0.0147694787
-  85.  0.0147569505
-  85.0999985  0.0147429481
-  85.1999969  0.0147296824
-  85.3000031  0.0147149423
-  85.4000015  0.0147002023
-  85.5  0.0146847246
-  85.5999985  0.0146692479
-  85.6999969  0.0146537703
-  85.8000031  0.0146368193
-  85.9000015  0.0146206059
-  86.  0.0146029172
-  86.0999985  0.0145859672
-  86.1999969  0.014567541
-  86.3000031  0.0145498533
-  86.4000015  0.0145314289
-  86.5  0.014512267
-  86.5999985  0.0144931041
-  86.6999969  0.0144739421
-  86.8000031  0.0144540444
-  86.9000015  0.0144341439
-  87.  0.0144142453
-  87.0999985  0.0143936099
-  87.1999969  0.0143729737
-  87.3000031  0.0143516008
-  87.4000015  0.0143309645
-  87.5  0.0143095916
-  87.5999985  0.0142882187
-  87.6999969  0.0142661082
-  87.8000031  0.0142439995
-  87.9000015  0.014221889
-  88.  0.0141997784
-  88.0999985  0.0141776688
-  88.1999969  0.0141548216
-  88.3000031  0.014132712
-  88.4000015  0.0141098648
-  88.5  0.0140870176
-  88.5999985  0.0140634337
-  88.6999969  0.0140405865
-  88.8000031  0.0140177403
-  88.9000015  0.0139941564
-  89.  0.0139705716
-  89.0999985  0.0139477244
-  89.1999969  0.0139241405
-  89.3000031  0.0139005575
-  89.4000015  0.0138769727
-  89.5  0.0138533888
-  89.5999985  0.013829805
-  89.6999969  0.0138054835
-  89.8000031  0.0137819005
-  89.9000015  0.0137583157
-  90.  0.0137339951
-  90.0999985  0.0137104103
-  90.1999969  0.0136860898
-  90.3000031  0.0136625059
-  90.4000015  0.0136381844
-  90.5  0.0136138638
-  90.5999985  0.013590279
-  90.6999969  0.0135659594
-  90.8000031  0.0135416379
-  90.9000015  0.0135173164
-  91.  0.0134929959
-  91.0999985  0.0134686744
-  91.1999969  0.0134443538
-  91.3000031  0.0134200333
-  91.4000015  0.0133957118
-  91.5  0.0133706536
-  91.5999985  0.0133463331
-  91.6999969  0.0133220116
-  91.8000031  0.0132969534
-  91.9000015  0.0132718952
-  92.  0.0132468371
-  92.0999985  0.0132225174
-  92.1999969  0.0131974593
-  92.3000031  0.0131716635
-  92.4000015  0.0131466053
-  92.5  0.0131215481
-  92.5999985  0.0130957533
-  92.6999969  0.0130699575
-  92.8000031  0.0130448993
-  92.9000015  0.0130191045
-  93.  0.012992573
-  93.0999985  0.0129667781
-  93.1999969  0.0129402457
-  93.3000031  0.0129144508
-  93.4000015  0.0128871817
-  93.5  0.0128606502
-  93.5999985  0.0128341177
-  93.6999969  0.0128068486
-  93.8000031  0.0127795804
-  93.9000015  0.0127523113
-  94.  0.0127250422
-  94.0999985  0.0126970354
-  94.1999969  0.0126690306
-  94.3000031  0.0126410238
-  94.4000015  0.012613018
-  94.5  0.0125842746
-  94.5999985  0.0125555322
-  94.6999969  0.0125267887
-  94.8000031  0.0124973087
-  94.9000015  0.0124685653
-  95.  0.0124383494
-  95.0999985  0.0124088693
-  95.1999969  0.0123793883
-  95.3000031  0.0123491716
-  95.4000015  0.0123182181
-  95.5  0.0122880004
-  95.5999985  0.012257047
-  95.6999969  0.0122260926
-  95.8000031  0.0121951392
-  95.9000015  0.0121634481
-  96.  0.0121317562
-  96.0999985  0.0121000661
-  96.1999969  0.012068375
-  96.3000031  0.0120359464
-  96.4000015  0.0120035186
-  96.5  0.0119710909
-  96.5999985  0.0119386632
-  96.6999969  0.0119054979
-  96.8000031  0.0118730702
-  96.9000015  0.0118399048
-  97.  0.0118060028
-  97.0999985  0.0117728384
-  97.1999969  0.0117389364
-  97.3000031  0.0117050335
-  97.4000015  0.0116711315
-  97.5  0.0116372304
-  97.5999985  0.0116033275
-  97.6999969  0.0115694255
-  97.8000031  0.0115347868
-  97.9000015  0.0115001481
-  98.  0.0114655085
-  98.0999985  0.0114316074
-  98.1999969  0.0113969678
-  98.3000031  0.0113623291
-  98.4000015  0.0113276895
-  98.5  0.0112930508
-  98.5999985  0.0112576745
-  98.6999969  0.0112230359
-  98.8000031  0.0111883972
-  98.9000015  0.0111537576
-  99.  0.0111191189
-  99.0999985  0.0110844802
-  99.1999969  0.0110498406
-  99.3000031  0.0110152019
-  99.4000015  0.0109805632
-  99.5  0.0109466612
-  99.5999985  0.0109120216
-  99.6999969  0.0108781196
-  99.8000031  0.0108434809
-  99.9000015  0.0108095789
-  100.  0.0107756769
-  100.099998  0.0107417749
-  100.199997  0.0107086096
-  100.300003  0.0106747076
-  100.400002  0.0106415432
-  100.5  0.0106083779
-  100.599998  0.0105759501
-  100.699997  0.0105427848
-  100.800003  0.0105103571
-  100.900002  0.0104779284
-  101.  0.0104462374
-  101.099998  0.0104145473
-  101.199997  0.0103828562
-  101.300003  0.0103511643
-  101.400002  0.0103202108
-  101.5  0.0102892574
-  101.599998  0.010258303
-  101.699997  0.0102280853
-  101.800003  0.0101978686
-  101.900002  0.0101683894
-  102.  0.0101389084
-  102.099998  0.0101094283
-  102.199997  0.0100806858
-  102.300003  0.0100519434
-  102.400002  0.0100232
-  102.5  0.00999519322
-  102.599998  0.00996718835
-  102.699997  0.00993991923
-  102.800003  0.0099126501
-  102.900002  0.00988538098
-  103.  0.00985884946
-  103.099998  0.00983231701
-  103.199997  0.00980652217
-  103.300003  0.0097807264
-  103.400002  0.00975566823
-  103.5  0.009730611
-  103.599998  0.00970555283
-  103.699997  0.00968049467
-  103.800003  0.00965617318
-  103.900002  0.00963259023
-  104.  0.00960826874
-  104.099998  0.00958542153
-  104.199997  0.00956183765
-  104.300003  0.00953899045
-  104.400002  0.00951614417
-  104.5  0.00949329697
-  104.599998  0.00947118644
-  104.699997  0.00944907684
-  104.800003  0.00942696631
-  104.900002  0.00940559432
-  105.  0.00938348379
-  105.099998  0.00936211087
-  105.199997  0.00934147462
-  105.300003  0.0093201017
-  105.400002  0.00929946546
-  105.5  0.00927883014
-  105.599998  0.0092581939
-  105.699997  0.00923755765
-  105.800003  0.0092169214
-  105.900002  0.00919628516
-  106.  0.00917638745
-  106.099998  0.00915575121
-  106.199997  0.00913585164
-  106.300003  0.00911521539
-  106.400002  0.00909531675
-  106.5  0.00907541718
-  106.599998  0.00905478187
-  106.699997  0.00903488323
-  106.800003  0.00901424699
-  106.900002  0.00899434742
-  107.  0.00897371117
-  107.099998  0.00895381346
-  107.199997  0.00893317722
-  107.300003  0.00891254097
-  107.400002  0.00889116805
-  107.5  0.0088705318
-  107.599998  0.00884989556
-  107.699997  0.00882852357
-  107.800003  0.00880714972
-  107.900002  0.00878504012
-  108.  0.00876366626
-  108.099998  0.00874155667
-  108.199997  0.00871944707
-  108.300003  0.00869733747
-  108.400002  0.00867449027
-  108.5  0.00865164306
-  108.599998  0.00862805825
-  108.699997  0.00860521197
-  108.800003  0.00858089142
-  108.900002  0.0085573066
-  109.  0.00853298604
-  109.099998  0.00850866456
-  109.199997  0.00848360732
-  109.300003  0.00845854916
-  109.400002  0.00843275338
-  109.5  0.00840695854
-  109.599998  0.00838116463
-  109.699997  0.00835463218
-  109.800003  0.00832809974
-  109.900002  0.00830083061
-  110.  0.00827356242
-  110.099998  0.00824555568
-  110.199997  0.00821754988
-  110.300003  0.00818954315
-  110.400002  0.0081608016
-  110.5  0.00813132059
-  110.599998  0.00810257811
-  110.699997  0.00807236042
-  110.800003  0.00804288127
-  110.900002  0.00801266357
-  111.  0.00798171014
-  111.099998  0.00795075577
-  111.199997  0.00791980233
-  111.300003  0.00788811129
-  111.400002  0.00785715692
-  111.5  0.0078247292
-  111.599998  0.00779230101
-  111.699997  0.00775987282
-  111.800003  0.00772744464
-  111.900002  0.00769501692
-  112.  0.00766185205
-  112.099998  0.00762794958
-  112.199997  0.00759478519
-  112.300003  0.00756088318
-  112.400002  0.00752771785
-  112.5  0.00749381538
-  112.599998  0.00745917717
-  112.699997  0.0074252747
-  112.800003  0.00739063555
-  112.900002  0.00735666044
-  113.  0.00732224248
-  113.099998  0.00728775095
-  113.199997  0.00725325895
-  113.300003  0.00721876742
-  113.400002  0.00718420232
-  113.5  0.00714971079
-  113.599998  0.00711521879
-  113.699997  0.00708080083
-  113.800003  0.00704645691
-  113.900002  0.00701218657
-  114.  0.00697806338
-  114.099998  0.00694401423
-  114.199997  0.00691011176
-  114.300003  0.00687635737
-  114.400002  0.0068428237
-  114.5  0.00680943765
-  114.599998  0.00677627278
-  114.699997  0.00674332865
-  114.800003  0.0067106057
-  114.900002  0.00667817798
-  115.  0.00664597098
-  115.099998  0.00661405921
-  115.199997  0.00658251531
-  115.300003  0.00655126665
-  115.400002  0.00652031275
-  115.5  0.00648972718
-  115.599998  0.00645950995
-  115.699997  0.00642966153
-  115.800003  0.00640025549
-  115.900002  0.00637121731
-  116.  0.00634254841
-  116.099998  0.006314395
-  116.199997  0.00628660992
-  116.300003  0.00625934079
-  116.400002  0.00623244047
-  116.5  0.00620612921
-  116.599998  0.00618018722
-  116.699997  0.00615476072
-  116.800003  0.00612985017
-  116.900002  0.0061054551
-  117.  0.00608157646
-  117.099998  0.00605813973
-  117.199997  0.00603529299
-  117.300003  0.00601288816
-  117.400002  0.00599107286
-  117.5  0.00596977351
-  117.599998  0.00594899058
-  117.699997  0.00592872268
-  117.800003  0.00590904476
-  117.900002  0.00588980922
-  118.  0.00587116275
-  118.099998  0.00585303316
-  118.199997  0.00583541859
-  118.300003  0.00581832044
-  118.400002  0.00580173777
-  118.5  0.00578567106
-  118.599998  0.0057701203
-  118.699997  0.0057550855
-  118.800003  0.00574049307
-  118.900002  0.0057264166
-  119.  0.00571278157
-  119.099998  0.00569958938
-  119.199997  0.00568691269
-  119.300003  0.00567467883
-  119.400002  0.00566281285
-  119.5  0.00565138925
-  119.599998  0.00564040802
-  119.699997  0.00562972203
-  119.800003  0.00561947748
-  119.900002  0.00560960174
-  120.  0.0056000948
-  120.099998  0.00559088215
-  120.199997  0.00558196427
-  120.300003  0.00557334162
-  120.400002  0.00556501281
-  120.5  0.00555697968
-  120.599998  0.00554916775
-  120.699997  0.00554150296
-  120.800003  0.00553413294
-  120.900002  0.00552691007
-  121.  0.00551990885
-  121.099998  0.00551298121
-  121.199997  0.00550620072
-  121.300003  0.0054994938
-  121.400002  0.00549293449
-  121.5  0.00548637519
-  121.599998  0.00547988992
-  121.699997  0.00547347777
-  121.800003  0.00546699204
-  121.900002  0.00546050677
-  122.  0.00545394747
-  122.099998  0.00544738816
-  122.199997  0.00544075528
-  122.300003  0.00543397432
-  122.400002  0.00542704668
-  122.5  0.005420045
-  122.599998  0.00541289663
-  122.699997  0.00540552661
-  122.800003  0.0053979354
-  122.900002  0.00539019704
-  123.  0.00538216345
-  123.099998  0.00537390914
-  123.199997  0.00536536006
-  123.300003  0.0053565898
-  123.400002  0.00534745073
-  123.5  0.00533809094
-  123.599998  0.00532828877
-  123.699997  0.0053181923
-  123.800003  0.00530780014
-  123.900002  0.00529696653
-  124.  0.00528576365
-  124.099998  0.0052741929
-  124.199997  0.00526218023
-  124.300003  0.0052497983
-  124.400002  0.00523697445
-  124.5  0.00522370869
-  124.599998  0.00521007413
-  124.699997  0.00519592362
-  124.800003  0.00518140476
-  124.900002  0.00516636996
-  125.  0.00515089324
-  125.099998  0.00513497368
-  125.199997  0.0051186122
-  125.300003  0.00510173524
-  125.400002  0.00508448947
-  125.5  0.00506672729
-  125.599998  0.00504852366
-  125.699997  0.00502987765
-  125.800003  0.00501071522
-  125.900002  0.00499118492
-  126.  0.00497121224
-  126.099998  0.00495079719
-  126.199997  0.00492994022
-  126.300003  0.00490871491
-  126.400002  0.00488704676
-  126.5  0.00486501027
-  126.599998  0.00484253233
-  126.699997  0.0048197587
-  126.800003  0.00479654316
-  126.900002  0.00477303332
-  127.  0.00474915421
-  127.099998  0.0047249808
-  127.199997  0.00470051216
-  127.300003  0.00467574876
-  127.400002  0.00465069106
-  127.5  0.00462541217
-  127.599998  0.00459983805
-  127.699997  0.00457411679
-  127.800003  0.00454810075
-  127.900002  0.00452201068
-  128.  0.00449569989
-  128.100006  0.00446924148
-  128.199997  0.0044427095
-  128.300003  0.00441603037
-  128.399994  0.00438935077
-  128.5  0.00436252402
-  128.600006  0.00433569727
-  128.699997  0.00430887053
-  128.800003  0.00428204378
-  128.899994  0.00425529061
-  129.  0.00422853744
-  129.100006  0.00420193188
-  129.199997  0.0041753999
-  129.300003  0.00414894149
-  129.399994  0.00412263023
-  129.5  0.00409654062
-  129.600006  0.00407067221
-  129.699997  0.00404495047
-  129.800003  0.0040194504
-  129.899994  0.00399424508
-  130.  0.00396933453
-  130.100006  0.00394471874
-  130.199997  0.00392039772
-  130.300003  0.00389637146
-  130.399994  0.00387278758
-  130.5  0.00384957204
-  130.600006  0.00382672483
-  130.699997  0.00380432047
-  130.800003  0.00378228398
-  130.899994  0.00376076368
-  131.  0.00373968529
-  131.100006  0.00371912285
-  131.199997  0.00369907659
-  131.300003  0.00367947249
-  131.399994  0.00366045791
-  131.5  0.00364195905
-  131.600006  0.00362397614
-  131.699997  0.00360658322
-  131.800003  0.00358977937
-  131.899994  0.00357356551
-  132.  0.00355794118
-  132.100006  0.00354290614
-  132.199997  0.00352846109
-  132.300003  0.00351460557
-  132.399994  0.00350141316
-  132.5  0.0034888105
-  132.600006  0.00347687118
-  132.699997  0.00346552138
-  132.800003  0.00345483492
-  132.899994  0.00344473799
-  133.  0.00343530439
-  133.100006  0.00342646055
-  133.199997  0.00341827958
-  133.300003  0.00341061479
-  133.399994  0.00340368715
-  133.5  0.00339727523
-  133.600006  0.00339152641
-  133.699997  0.00338629377
-  133.800003  0.00338165066
-  133.899994  0.00337767089
-  134.  0.00337413326
-  134.100006  0.00337118539
-  134.199997  0.00336882682
-  134.300003  0.00336691085
-  134.399994  0.00336551061
-  134.5  0.00336462609
-  134.600006  0.00336418394
-  134.699997  0.00336425751
-  134.800003  0.00336469966
-  134.899994  0.00336558418
-  135.  0.00336691085
-  135.100006  0.00336853205
-  135.199997  0.00337059586
-  135.300003  0.0033728804
-  135.399994  0.00337560731
-  135.5  0.00337855518
-  135.600006  0.00338179828
-  135.699997  0.0033852621
-  135.800003  0.00338894688
-  135.899994  0.00339285308
-  136.  0.00339690666
-  136.100006  0.00340110762
-  136.199997  0.00340538216
-  136.300003  0.00340980431
-  136.399994  0.0034142998
-  136.5  0.00341879553
-  136.600006  0.00342329126
-  136.699997  0.00342786056
-  136.800003  0.00343228271
-  136.899994  0.00343670463
-  137.  0.00344105298
-  137.100006  0.00344525394
-  137.199997  0.00344930729
-  137.300003  0.00345313968
-  137.399994  0.00345682492
-  137.5  0.00346028875
-  137.600006  0.00346353138
-  137.699997  0.00346647948
-  137.800003  0.00346913259
-  137.899994  0.00347149116
-  138.  0.00347348093
-  138.100006  0.00347510236
-  138.199997  0.00347635522
-  138.300003  0.00347723952
-  138.399994  0.00347768189
-  138.5  0.00347760809
-  138.600006  0.00347716594
-  138.699997  0.00347620784
-  138.800003  0.00347473379
-  138.899994  0.00347274402
-  139.  0.00347023807
-  139.100006  0.00346714258
-  139.199997  0.00346353138
-  139.300003  0.00345933065
-  139.399994  0.00345461373
-  139.5  0.00344923371
-  139.600006  0.00344326394
-  139.699997  0.00343670463
-  139.800003  0.0034295558
-  139.899994  0.0034217434
-  140.  0.00341334171
-  140.100006  0.00340427668
-  140.199997  0.00339454832
-  140.300003  0.00338423019
-  140.399994  0.00337332278
-  140.5  0.00336175179
-  140.600006  0.00334951747
-  140.699997  0.00333669386
-  140.800003  0.00332328025
-  140.899994  0.00330920354
-  141.  0.00329453731
-  141.100006  0.00327928155
-  141.199997  0.00326343603
-  141.300003  0.00324700098
-  141.399994  0.00323004997
-  141.5  0.00321250921
-  141.600006  0.00319445273
-  141.699997  0.00317588029
-  141.800003  0.00315679214
-  141.899994  0.0031371878
-  142.  0.00311714131
-  142.100006  0.00309665268
-  142.199997  0.00307579571
-  142.300003  0.00305442279
-  142.399994  0.00303275487
-  142.5  0.00301071862
-  142.600006  0.00298831379
-  142.699997  0.00296554063
-  142.800003  0.00294254604
-  142.899994  0.00291933073
-  143.  0.00289582019
-  143.100006  0.00287216273
-  143.199997  0.00284828385
-  143.300003  0.00282425759
-  143.399994  0.00280008395
-  143.5  0.00277591031
-  143.600006  0.00275158929
-  143.699997  0.0027272685
-  143.800003  0.00270294747
-  143.899994  0.00267870026
-  144.  0.00265445281
-  144.100006  0.00263035297
-  144.199997  0.00260632671
-  144.300003  0.00258244784
-  144.399994  0.00255879038
-  144.5  0.00253535365
-  144.600006  0.0025121381
-  144.699997  0.00248921756
-  144.800003  0.00246659154
-  144.899994  0.0024443341
-  145.  0.00242244522
-  145.100006  0.00240092492
-  145.199997  0.00237984653
-  145.300003  0.00235921075
-  145.399994  0.00233909069
-  145.5  0.00231948635
-  145.600006  0.00230032438
-  145.699997  0.00228182576
-  145.800003  0.00226384285
-  145.899994  0.00224652328
-  146.  0.00222986704
-  146.100006  0.00221380056
-  146.199997  0.00219839718
-  146.300003  0.00218373095
-  146.399994  0.00216980185
-  146.5  0.00215660944
-  146.600006  0.00214415416
-  146.699997  0.00213243579
-  146.800003  0.00212152814
-  146.899994  0.00211143121
-  147.  0.00210214499
-  147.100006  0.00209366949
-  147.199997  0.00208607852
-  147.300003  0.00207929802
-  147.399994  0.00207332848
-  147.5  0.00206824299
-  147.600006  0.00206404203
-  147.699997  0.00206072559
-  147.800003  0.00205821986
-  147.899994  0.00205659843
-  148.  0.00205586152
-  148.100006  0.00205593533
-  148.199997  0.00205689319
-  148.300003  0.00205873582
-  148.399994  0.00206138892
-  148.5  0.00206492655
-  148.600006  0.00206927489
-  148.699997  0.00207443396
-  148.800003  0.0020804035
-  148.899994  0.002087184
-  149.  0.00209477497
-  149.100006  0.00210310309
-  149.199997  0.00211216812
-  149.300003  0.00212197029
-  149.399994  0.00213243579
-  149.5  0.00214363821
-  149.600006  0.00215550396
-  149.699997  0.00216795923
-  149.800003  0.00218107784
-  149.899994  0.00219478598
-  150.  0.00220901007
-  150.100006  0.00222382369
-  150.199997  0.00223915349
-  150.300003  0.0022549252
-  150.399994  0.00227106549
-  150.5  0.00228772149
-  150.600006  0.00230467273
-  150.699997  0.00232206588
-  150.800003  0.00233968021
-  150.899994  0.00235758931
-  151.  0.0023757196
-  151.100006  0.00239407062
-  151.199997  0.00241256948
-  151.300003  0.00243121549
-  151.399994  0.0024499353
-  151.5  0.00246872893
-  151.600006  0.00248752232
-  151.699997  0.00250631571
-  151.800003  0.00252496195
-  151.899994  0.00254360819
-  152.  0.00256203301
-  152.100006  0.00258031068
-  152.199997  0.00259836717
-  152.300003  0.00261612888
-  152.399994  0.00263359584
-  152.5  0.0026507678
-  152.600006  0.00266757142
-  152.699997  0.00268393289
-  152.800003  0.00269985199
-  152.899994  0.00271532894
-  153.  0.00273029017
-  153.100006  0.00274466164
-  153.199997  0.00275851716
-  153.300003  0.00277170958
-  153.399994  0.00278423866
-  153.5  0.00279610418
-  153.600006  0.00280723278
-  153.699997  0.00281769829
-  153.800003  0.00282735308
-  153.899994  0.00283619692
-  154.  0.00284423027
-  154.100006  0.00285145291
-  154.199997  0.00285779103
-  154.300003  0.00286331866
-  154.399994  0.00286781439
-  154.5  0.0028714994
-  154.600006  0.00287422608
-  154.699997  0.00287592132
-  154.800003  0.00287673203
-  154.899994  0.00287658465
-  155.  0.00287540536
-  155.100006  0.0028731944
-  155.199997  0.00287002535
-  155.300003  0.00286582438
-  155.399994  0.00286066532
-  155.5  0.00285447459
-  155.600006  0.00284725218
-  155.699997  0.00283899764
-  155.800003  0.00282978523
-  155.899994  0.00281954091
-  156.  0.00280826492
-  156.100006  0.00279610418
-  156.199997  0.00278291199
-  156.300003  0.00276876171
-  156.399994  0.0027536531
-  156.5  0.00273758639
-  156.600006  0.00272070919
-  156.699997  0.00270287367
-  156.800003  0.00268415408
-  156.899994  0.00266462332
-  157.  0.0026442823
-  157.100006  0.00262313033
-  157.199997  0.00260116765
-  157.300003  0.00257854187
-  157.399994  0.00255517894
-  157.5  0.00253115292
-  157.600006  0.00250646309
-  157.699997  0.0024811842
-  157.800003  0.00245538913
-  157.899994  0.00242900476
-  158.  0.00240217778
-  158.100006  0.00237490865
-  158.199997  0.00234719738
-  158.300003  0.00231919135
-  158.399994  0.00229081698
-  158.5  0.00226222142
-  158.600006  0.00223333109
-  158.699997  0.00220429315
-  158.800003  0.00217518164
-  158.899994  0.00214599655
-  159.  0.00211673765
-  159.100006  0.00208747876
-  159.199997  0.00205836724
-  159.300003  0.00202932954
-  159.399994  0.00200043921
-  159.5  0.00197184342
-  159.600006  0.00194346893
-  159.699997  0.00191546301
-  159.800003  0.00188782543
-  159.899994  0.00186063023
-  160.  0.00183387718
-  160.100006  0.00180771365
-  160.199997  0.00178213976
-  160.300003  0.00175715541
-  160.399994  0.00173290807
-  160.5  0.00170939777
-  160.600006  0.00168669818
-  160.699997  0.0016648093
-  160.800003  0.00164380472
-  160.899994  0.00162375835
-  161.  0.00160467008
-  161.100006  0.00158661359
-  161.199997  0.0015695889
-  161.300003  0.00155374338
-  161.399994  0.00153900334
-  161.5  0.00152551627
-  161.600006  0.00151328207
-  161.699997  0.00150222704
-  161.800003  0.00149257237
-  161.899994  0.00148424425
-  162.  0.00147731649
-  162.100006  0.00147178909
-  162.199997  0.00146766182
-  162.300003  0.00146508228
-  162.399994  0.00146397681
-  162.5  0.00146441895
-  162.600006  0.00146640884
-  162.699997  0.00146994647
-  162.800003  0.00147510541
-  162.899994  0.00148188591
-  163.  0.00149021391
-  163.100006  0.00150023727
-  163.199997  0.00151195552
-  163.300003  0.0015252952
-  163.399994  0.00154033001
-  163.5  0.00155698624
-  163.600006  0.00157533749
-  163.699997  0.00159538386
-  163.800003  0.00161712547
-  163.899994  0.00164056197
-  164.  0.00166562002
-  164.100006  0.00169229938
-  164.199997  0.00172067387
-  164.300003  0.00175066979
-  164.399994  0.00178236072
-  164.5  0.00181559962
-  164.600006  0.00185038603
-  164.699997  0.00188679376
-  164.800003  0.00192474911
-  164.899994  0.00196417863
-  165.  0.00200508209
-  165.100006  0.0020475334
-  165.199997  0.00209131115
-  165.300003  0.00213656295
-  165.399994  0.00218314142
-  165.5  0.00223104632
-  165.600006  0.00228020409
-  165.699997  0.00233061495
-  165.800003  0.00238227891
-  165.899994  0.00243504811
-  166.  0.00248892256
-  166.100006  0.00254382915
-  166.199997  0.00259984098
-  166.300003  0.00265673734
-  166.399994  0.00271451846
-  166.5  0.0027731834
-  166.600006  0.00283265929
-  166.699997  0.00289287255
-  166.800003  0.00295374845
-  166.899994  0.00301528815
-  167.  0.00307741715
-  167.100006  0.00313998852
-  167.199997  0.0032030018
-  167.300003  0.0032664577
-  167.399994  0.00333020813
-  167.5  0.00339425355
-  167.600006  0.00345844612
-  167.699997  0.00352278608
-  167.800003  0.00358727365
-  167.899994  0.00365168764
-  168.  0.0037160276
-  168.100006  0.00378029398
-  168.199997  0.00384441298
-  168.300003  0.00390823744
-  168.399994  0.00397176668
-  168.5  0.00403492758
-  168.600006  0.0040976461
-  168.699997  0.00415984914
-  168.800003  0.00422153575
-  168.899994  0.00428263331
-  169.  0.00434299326
-  169.100006  0.00440261653
-  169.199997  0.00446150312
-  169.300003  0.00451950496
-  169.399994  0.00457662251
-  169.5  0.00463278219
-  169.600006  0.0046879095
-  169.699997  0.00474200537
-  169.800003  0.00479499577
-  169.899994  0.00484680664
-  170.  0.00489736488
-  170.100006  0.00494674407
-  170.199997  0.00499479612
-  170.300003  0.00504152197
-  170.399994  0.00508684805
-  170.5  0.00513077294
-  170.600006  0.0051732976
-  170.699997  0.00521427486
-  170.800003  0.0052537783
-  170.899994  0.00529173389
-  171.  0.00532806804
-  171.100006  0.00536285434
-  171.199997  0.0053960192
-  171.300003  0.00542756263
-  171.399994  0.00545741105
-  171.5  0.00548563804
-  171.600006  0.00551209645
-  171.699997  0.00553693343
-  171.800003  0.00556000136
-  171.899994  0.00558137475
-  172.  0.00560105266
-  172.100006  0.00561896153
-  172.199997  0.00563517585
-  172.300003  0.00564969424
-  172.399994  0.00566251809
-  172.5  0.00567357335
-  172.600006  0.00568293314
-  172.699997  0.0056906715
-  172.800003  0.00569671532
-  172.899994  0.00570113724
-  173.  0.00570386415
-  173.100006  0.00570496963
-  173.199997  0.00570452726
-  173.300003  0.00570253748
-  173.399994  0.00569899939
-  173.5  0.00569398794
-  173.600006  0.0056874291
-  173.699997  0.00567946956
-  173.800003  0.0056701093
-  173.899994  0.0056594233
-  174.  0.00564733613
-  174.100006  0.00563399633
-  174.199997  0.00561940391
-  174.300003  0.00560355838
-  174.399994  0.00558660692
-  174.5  0.0055685509
-  174.600006  0.00554946251
-  174.699997  0.00552934268
-  174.800003  0.00550826406
-  174.899994  0.00548622804
-  175.  0.00546338083
-  175.100006  0.00543972338
-  175.199997  0.00541532831
-  175.300003  0.00539019704
-  175.399994  0.00536447531
-  175.5  0.00533816451
-  175.600006  0.00531133777
-  175.699997  0.00528399507
-  175.800003  0.00525628403
-  175.899994  0.00522820419
-  176.  0.00519990362
-  176.100006  0.00517130783
-  176.199997  0.00514256489
-  176.300003  0.00511367433
-  176.399994  0.00508478377
-  176.5  0.00505581964
-  176.600006  0.00502692955
-  176.699997  0.0049981866
-  176.800003  0.00496959081
-  176.899994  0.00494129024
-  177.  0.0049132104
-  177.100006  0.00488542579
-  177.199997  0.00485808263
-  177.300003  0.0048311823
-  177.399994  0.00480479794
-  177.5  0.00477892905
-  177.600006  0.00475365017
-  177.699997  0.00472903438
-  177.800003  0.00470508169
-  177.899994  0.00468186615
-  178.  0.00465938775
-  178.100006  0.00463779364
-  178.199997  0.00461701024
-  178.300003  0.00459711114
-  178.399994  0.00457817037
-  178.5  0.00456026103
-  178.600006  0.00454323646
-  178.699997  0.00452731736
-  178.800003  0.00451243017
-  178.899994  0.00449864799
-  179.  0.00448597176
-  179.100006  0.00447440054
-  179.199997  0.00446400885
-  179.300003  0.00445479667
-  179.399994  0.00444683712
-  179.5  0.00443998259
-  179.600006  0.00443445519
-  179.699997  0.00443003327
-  179.800003  0.00442693802
-  179.899994  0.00442509539
+0	1
+0.1	1
+0.2	1
+0.3	1
+0.4	1
+0.5	1
+0.6	1
+0.7	1
+0.8	1
+0.9	1
+1	1
+1.1	1
+1.2	1
+1.3	1
+1.4	1
+1.5	1
+1.6	1
+1.7	1
+1.8	1
+1.9	1
+2	1
+2.1	1
+2.2	1
+2.3	1
+2.4	1
+2.5	1
+2.6	1
+2.7	1
+2.8	1
+2.9	1
+3	1
+3.1	1
+3.2	1
+3.3	1
+3.4	1
+3.5	1
+3.6	1
+3.7	1
+3.8	1
+3.9	1
+4	1
+4.1	1
+4.2	1
+4.3	1
+4.4	1
+4.5	1
+4.6	1
+4.7	1
+4.8	1
+4.9	1
+5	1
+5.1	1
+5.2	1
+5.3	1
+5.4	1
+5.5	1
+5.6	1
+5.7	1
+5.8	1
+5.9	1
+6	1
+6.1	1
+6.2	1
+6.3	1
+6.4	1
+6.5	1
+6.6	1
+6.7	1
+6.8	1
+6.9	1
+7	1
+7.1	1
+7.2	1
+7.3	1
+7.4	1
+7.5	1
+7.6	1
+7.7	1
+7.8	1
+7.9	1
+8	1
+8.1	1
+8.2	1
+8.3	1
+8.4	1
+8.5	1
+8.6	1
+8.7	1
+8.8	1
+8.9	1
+9	1
+9.1	1
+9.2	1
+9.3	1
+9.4	1
+9.5	1
+9.6	1
+9.7	1
+9.8	1
+9.9	1
+10	1
+10.1	1
+10.2	1
+10.3	1
+10.4	1
+10.5	1
+10.6	1
+10.7	1
+10.8	1
+10.9	1
+11	1
+11.1	1
+11.2	1
+11.3	1
+11.4	1
+11.5	1
+11.6	1
+11.7	1
+11.8	1
+11.9	1
+12	1
+12.1	1
+12.2	1
+12.3	1
+12.4	1
+12.5	1
+12.6	1
+12.7	1
+12.8	1
+12.9	1
+13	1
+13.1	1
+13.2	1
+13.3	1
+13.4	1
+13.5	1
+13.6	1
+13.7	1
+13.8	1
+13.9	1
+14	1
+14.1	1
+14.2	1
+14.3	1
+14.4	1
+14.5	1
+14.6	1
+14.7	1
+14.8	1
+14.9	1
+15	1
+15.1	1
+15.2	1
+15.3	1
+15.4	1
+15.5	1
+15.6	1
+15.7	1
+15.8	1
+15.9	1
+16	1
+16.1	1
+16.2	1
+16.3	1
+16.4	1
+16.5	1
+16.6	1
+16.7	1
+16.8	1
+16.9	1
+17	1
+17.1	1
+17.2	1
+17.3	1
+17.4	1
+17.5	1
+17.6	1
+17.7	1
+17.8	1
+17.9	1
+18	1
+18.1	1
+18.2	1
+18.3	1
+18.4	1
+18.5	1
+18.6	1
+18.7	1
+18.8	1
+18.9	1
+19	1
+19.1	1
+19.2	1
+19.3	1
+19.4	1
+19.5	1
+19.6	1
+19.7	1
+19.8	1
+19.9	1
+20	1
+20.1	1
+20.2	1
+20.3	1
+20.4	1
+20.5	1
+20.6	1
+20.7	1
+20.8	1
+20.9	1
+21	1
+21.1	1
+21.2	1
+21.3	1
+21.4	1
+21.5	1
+21.6	1
+21.7	1
+21.8	1
+21.9	1
+22	1
+22.1	1
+22.2	1
+22.3	1
+22.4	1
+22.5	1
+22.6	1
+22.7	1
+22.8	1
+22.9	1
+23	1
+23.1	1
+23.2	1
+23.3	1
+23.4	1
+23.5	1
+23.6	1
+23.7	1
+23.8	1
+23.9	1
+24	1
+24.1	1
+24.2	1
+24.3	1
+24.4	1
+24.5	1
+24.6	1
+24.7	1
+24.8	1
+24.9	1
+25	1
+25.1	1
+25.2	1
+25.3	1
+25.4	1
+25.5	1
+25.6	1
+25.7	1
+25.8	1
+25.9	1
+26	1
+26.1	1
+26.2	1
+26.3	1
+26.4	1
+26.5	1
+26.6	1
+26.7	1
+26.8	1
+26.9	1
+27	1
+27.1	1
+27.2	1
+27.3	1
+27.4	1
+27.5	1
+27.6	1
+27.7	1
+27.8	1
+27.9	1
+28	1
+28.1	1
+28.2	1
+28.3	1
+28.4	1
+28.5	1
+28.6	1
+28.7	1
+28.8	1
+28.9	1
+29	1
+29.1	1
+29.2	1
+29.3	1
+29.4	1
+29.5	1
+29.6	1
+29.7	1
+29.8	1
+29.9	1
+30	1
+30.1	1
+30.2	1
+30.3	1
+30.4	1
+30.5	1
+30.6	1
+30.7	1
+30.8	1
+30.9	1
+31	1
+31.1	1
+31.2	1
+31.3	1
+31.4	1
+31.5	1
+31.6	1
+31.7	1
+31.8	1
+31.9	1
+32	1
+32.1	1
+32.2	1
+32.3	1
+32.4	1
+32.5	1
+32.6	1
+32.7	1
+32.8	1
+32.9	1
+33	1
+33.1	1
+33.2	1
+33.3	1
+33.4	1
+33.5	1
+33.6	1
+33.7	1
+33.8	1
+33.9	1
+34	1
+34.1	1
+34.2	1
+34.3	1
+34.4	1
+34.5	1
+34.6	1
+34.7	1
+34.8	1
+34.9	1
+35	1
+35.1	1
+35.2	1
+35.3	1
+35.4	1
+35.5	1
+35.6	1
+35.7	1
+35.8	1
+35.9	1
+36	1
+36.1	1
+36.2	1
+36.3	1
+36.4	1
+36.5	1
+36.6	1
+36.7	1
+36.8	1
+36.9	1
+37	1
+37.1	1
+37.2	1
+37.3	1
+37.4	1
+37.5	1
+37.6	1
+37.7	1
+37.8	1
+37.9	1
+38	1
+38.1	1
+38.2	1
+38.3	1
+38.4	1
+38.5	1
+38.6	1
+38.7	1
+38.8	1
+38.9	1
+39	1
+39.1	1
+39.2	1
+39.3	1
+39.4	1
+39.5	1
+39.6	1
+39.7	1
+39.8	1
+39.9	1
+40	1
+40.1	1
+40.2	1
+40.3	1
+40.4	1
+40.5	1
+40.6	1
+40.7	1
+40.8	1
+40.9	1
+41	1
+41.1	1
+41.2	1
+41.3	1
+41.4	1
+41.5	1
+41.6	1
+41.7	1
+41.8	1
+41.9	1
+42	1
+42.1	1
+42.2	1
+42.3	1
+42.4	1
+42.5	1
+42.6	1
+42.7	1
+42.8	1
+42.9	1
+43	1
+43.1	1
+43.2	1
+43.3	1
+43.4	1
+43.5	1
+43.6	1
+43.7	1
+43.8	1
+43.9	1
+44	1
+44.1	1
+44.2	1
+44.3	1
+44.4	1
+44.5	1
+44.6	1
+44.7	1
+44.8	1
+44.9	1
+45	1
+45.1	1
+45.2	1
+45.3	1
+45.4	1
+45.5	1
+45.6	1
+45.7	1
+45.8	1
+45.9	1
+46	1
+46.1	1
+46.2	1
+46.3	1
+46.4	1
+46.5	1
+46.6	1
+46.7	1
+46.8	1
+46.9	1
+47	1
+47.1	1
+47.2	1
+47.3	1
+47.4	1
+47.5	1
+47.6	1
+47.7	1
+47.8	1
+47.9	1
+48	1
+48.1	1
+48.2	1
+48.3	1
+48.4	1
+48.5	1
+48.6	1
+48.7	1
+48.8	1
+48.9	1
+49	1
+49.1	1
+49.2	1
+49.3	1
+49.4	1
+49.5	1
+49.6	1
+49.7	1
+49.8	1
+49.9	1
+50	1
+50.1	1
+50.2	1
+50.3	1
+50.4	1
+50.5	1
+50.6	1
+50.7	1
+50.8	1
+50.9	1
+51	1
+51.1	1
+51.2	1
+51.3	1
+51.4	1
+51.5	1
+51.6	1
+51.7	1
+51.8	1
+51.9	1
+52	1
+52.1	1
+52.2	1
+52.3	1
+52.4	1
+52.5	1
+52.6	1
+52.7	1
+52.8	1
+52.9	1
+53	1
+53.1	1
+53.2	1
+53.3	1
+53.4	1
+53.5	1
+53.6	1
+53.7	1
+53.8	1
+53.9	1
+54	1
+54.1	1
+54.2	1
+54.3	1
+54.4	1
+54.5	1
+54.6	1
+54.7	1
+54.8	1
+54.9	1
+55	1
+55.1	1
+55.2	1
+55.3	1
+55.4	1
+55.5	1
+55.6	1
+55.7	1
+55.8	1
+55.9	1
+56	1
+56.1	1
+56.2	1
+56.3	1
+56.4	1
+56.5	1
+56.6	1
+56.7	1
+56.8	1
+56.9	1
+57	1
+57.1	1
+57.2	1
+57.3	1
+57.4	1
+57.5	1
+57.6	1
+57.7	1
+57.8	1
+57.9	1
+58	1
+58.1	1
+58.2	1
+58.3	1
+58.4	1
+58.5	1
+58.6	1
+58.7	1
+58.8	1
+58.9	1
+59	1
+59.1	1
+59.2	1
+59.3	1
+59.4	1
+59.5	1
+59.6	1
+59.7	1
+59.8	1
+59.9	1
+60	1
+60.1	1
+60.2	1
+60.3	1
+60.4	1
+60.5	1
+60.6	1
+60.7	1
+60.8	1
+60.9	1
+61	1
+61.1	1
+61.2	1
+61.3	1
+61.4	1
+61.5	1
+61.6	1
+61.7	1
+61.8	1
+61.9	1
+62	1
+62.1	1
+62.2	1
+62.3	1
+62.4	1
+62.5	1
+62.6	1
+62.7	1
+62.8	1
+62.9	1
+63	1
+63.1	1
+63.2	1
+63.3	1
+63.4	1
+63.5	1
+63.6	1
+63.7	1
+63.8	1
+63.9	1
+64	1
+64.1	1
+64.2	1
+64.3	1
+64.4	1
+64.5	1
+64.6	1
+64.7	1
+64.8	1
+64.9	1
+65	1
+65.1	1
+65.2	1
+65.3	1
+65.4	1
+65.5	1
+65.6	1
+65.7	1
+65.8	1
+65.9	1
+66	1
+66.1	1
+66.2	1
+66.3	1
+66.4	1
+66.5	1
+66.6	1
+66.7	1
+66.8	1
+66.9	1
+67	1
+67.1	1
+67.2	1
+67.3	1
+67.4	1
+67.5	1
+67.6	1
+67.7	1
+67.8	1
+67.9	1
+68	1
+68.1	1
+68.2	1
+68.3	1
+68.4	1
+68.5	1
+68.6	1
+68.7	1
+68.8	1
+68.9	1
+69	1
+69.1	1
+69.2	1
+69.3	1
+69.4	1
+69.5	1
+69.6	1
+69.7	1
+69.8	1
+69.9	1
+70	1
+70.1	1
+70.2	1
+70.3	1
+70.4	1
+70.5	1
+70.6	1
+70.7	1
+70.8	1
+70.9	1
+71	1
+71.1	1
+71.2	1
+71.3	1
+71.4	1
+71.5	1
+71.6	1
+71.7	1
+71.8	1
+71.9	1
+72	1
+72.1	1
+72.2	1
+72.3	1
+72.4	1
+72.5	1
+72.6	1
+72.7	1
+72.8	1
+72.9	1
+73	1
+73.1	1
+73.2	1
+73.3	1
+73.4	1
+73.5	1
+73.6	1
+73.7	1
+73.8	1
+73.9	1
+74	1
+74.1	1
+74.2	1
+74.3	1
+74.4	1
+74.5	1
+74.6	1
+74.7	1
+74.8	1
+74.9	1
+75	1
+75.1	1
+75.2	1
+75.3	1
+75.4	1
+75.5	1
+75.6	1
+75.7	1
+75.8	1
+75.9	1
+76	1
+76.1	1
+76.2	1
+76.3	1
+76.4	1
+76.5	1
+76.6	1
+76.7	1
+76.8	1
+76.9	1
+77	1
+77.1	1
+77.2	1
+77.3	1
+77.4	1
+77.5	1
+77.6	1
+77.7	1
+77.8	1
+77.9	1
+78	1
+78.1	1
+78.2	1
+78.3	1
+78.4	1
+78.5	1
+78.6	1
+78.7	1
+78.8	1
+78.9	1
+79	1
+79.1	1
+79.2	1
+79.3	1
+79.4	1
+79.5	1
+79.6	1
+79.7	1
+79.8	1
+79.9	1
+80	1
+80.1	1
+80.2	1
+80.3	1
+80.4	1
+80.5	1
+80.6	1
+80.7	1
+80.8	1
+80.9	1
+81	1
+81.1	1
+81.2	1
+81.3	1
+81.4	1
+81.5	1
+81.6	1
+81.7	1
+81.8	1
+81.9	1
+82	1
+82.1	1
+82.2	1
+82.3	1
+82.4	1
+82.5	1
+82.6	1
+82.7	1
+82.8	1
+82.9	1
+83	1
+83.1	1
+83.2	1
+83.3	1
+83.4	1
+83.5	1
+83.6	1
+83.7	1
+83.8	1
+83.9	1
+84	1
+84.1	1
+84.2	1
+84.3	1
+84.4	1
+84.5	1
+84.6	1
+84.7	1
+84.8	1
+84.9	1
+85	1
+85.1	1
+85.2	1
+85.3	1
+85.4	1
+85.5	1
+85.6	1
+85.7	1
+85.8	1
+85.9	1
+86	1
+86.1	1
+86.2	1
+86.3	1
+86.4	1
+86.5	1
+86.6	1
+86.7	1
+86.8	1
+86.9	1
+87	1
+87.1	1
+87.2	1
+87.3	1
+87.4	1
+87.5	1
+87.6	1
+87.7	1
+87.8	1
+87.9	1
+88	1
+88.1	1
+88.2	1
+88.3	1
+88.4	1
+88.5	1
+88.6	1
+88.7	1
+88.8	1
+88.9	1
+89	1
+89.1	1
+89.2	1
+89.3	1
+89.4	1
+89.5	1
+89.6	1
+89.7	1
+89.8	1
+89.9	1
+90	1
+90.1	1
+90.2	1
+90.3	1
+90.4	1
+90.5	1
+90.6	1
+90.7	1
+90.8	1
+90.9	1
+91	1
+91.1	1
+91.2	1
+91.3	1
+91.4	1
+91.5	1
+91.6	1
+91.7	1
+91.8	1
+91.9	1
+92	1
+92.1	1
+92.2	1
+92.3	1
+92.4	1
+92.5	1
+92.6	1
+92.7	1
+92.8	1
+92.9	1
+93	1
+93.1	1
+93.2	1
+93.3	1
+93.4	1
+93.5	1
+93.6	1
+93.7	1
+93.8	1
+93.9	1
+94	1
+94.1	1
+94.2	1
+94.3	1
+94.4	1
+94.5	1
+94.6	1
+94.7	1
+94.8	1
+94.9	1
+95	1
+95.1	1
+95.2	1
+95.3	1
+95.4	1
+95.5	1
+95.6	1
+95.7	1
+95.8	1
+95.9	1
+96	1
+96.1	1
+96.2	1
+96.3	1
+96.4	1
+96.5	1
+96.6	1
+96.7	1
+96.8	1
+96.9	1
+97	1
+97.1	1
+97.2	1
+97.3	1
+97.4	1
+97.5	1
+97.6	1
+97.7	1
+97.8	1
+97.9	1
+98	1
+98.1	1
+98.2	1
+98.3	1
+98.4	1
+98.5	1
+98.6	1
+98.7	1
+98.8	1
+98.9	1
+99	1
+99.1	1
+99.2	1
+99.3	1
+99.4	1
+99.5	1
+99.6	1
+99.7	1
+99.8	1
+99.9	1
+100	1
+100.1	1
+100.2	1
+100.3	1
+100.4	1
+100.5	1
+100.6	1
+100.7	1
+100.8	1
+100.9	1
+101	1
+101.1	1
+101.2	1
+101.3	1
+101.4	1
+101.5	1
+101.6	1
+101.7	1
+101.8	1
+101.9	1
+102	1
+102.1	1
+102.2	1
+102.3	1
+102.4	1
+102.5	1
+102.6	1
+102.7	1
+102.8	1
+102.9	1
+103	1
+103.1	1
+103.2	1
+103.3	1
+103.4	1
+103.5	1
+103.6	1
+103.7	1
+103.8	1
+103.9	1
+104	1
+104.1	1
+104.2	1
+104.3	1
+104.4	1
+104.5	1
+104.6	1
+104.7	1
+104.8	1
+104.9	1
+105	1
+105.1	1
+105.2	1
+105.3	1
+105.4	1
+105.5	1
+105.6	1
+105.7	1
+105.8	1
+105.9	1
+106	1
+106.1	1
+106.2	1
+106.3	1
+106.4	1
+106.5	1
+106.6	1
+106.7	1
+106.8	1
+106.9	1
+107	1
+107.1	1
+107.2	1
+107.3	1
+107.4	1
+107.5	1
+107.6	1
+107.7	1
+107.8	1
+107.9	1
+108	1
+108.1	1
+108.2	1
+108.3	1
+108.4	1
+108.5	1
+108.6	1
+108.7	1
+108.8	1
+108.9	1
+109	1
+109.1	1
+109.2	1
+109.3	1
+109.4	1
+109.5	1
+109.6	1
+109.7	1
+109.8	1
+109.9	1
+110	1
+110.1	1
+110.2	1
+110.3	1
+110.4	1
+110.5	1
+110.6	1
+110.7	1
+110.8	1
+110.9	1
+111	1
+111.1	1
+111.2	1
+111.3	1
+111.4	1
+111.5	1
+111.6	1
+111.7	1
+111.8	1
+111.9	1
+112	1
+112.1	1
+112.2	1
+112.3	1
+112.4	1
+112.5	1
+112.6	1
+112.7	1
+112.8	1
+112.9	1
+113	1
+113.1	1
+113.2	1
+113.3	1
+113.4	1
+113.5	1
+113.6	1
+113.7	1
+113.8	1
+113.9	1
+114	1
+114.1	1
+114.2	1
+114.3	1
+114.4	1
+114.5	1
+114.6	1
+114.7	1
+114.8	1
+114.9	1
+115	1
+115.1	1
+115.2	1
+115.3	1
+115.4	1
+115.5	1
+115.6	1
+115.7	1
+115.8	1
+115.9	1
+116	1
+116.1	1
+116.2	1
+116.3	1
+116.4	1
+116.5	1
+116.6	1
+116.7	1
+116.8	1
+116.9	1
+117	1
+117.1	1
+117.2	1
+117.3	1
+117.4	1
+117.5	1
+117.6	1
+117.7	1
+117.8	1
+117.9	1
+118	1
+118.1	1
+118.2	1
+118.3	1
+118.4	1
+118.5	1
+118.6	1
+118.7	1
+118.8	1
+118.9	1
+119	1
+119.1	1
+119.2	1
+119.3	1
+119.4	1
+119.5	1
+119.6	1
+119.7	1
+119.8	1
+119.9	1
+120	1
+120.1	1
+120.2	1
+120.3	1
+120.4	1
+120.5	1
+120.6	1
+120.7	1
+120.8	1
+120.9	1
+121	1
+121.1	1
+121.2	1
+121.3	1
+121.4	1
+121.5	1
+121.6	1
+121.7	1
+121.8	1
+121.9	1
+122	1
+122.1	1
+122.2	1
+122.3	1
+122.4	1
+122.5	1
+122.6	1
+122.7	1
+122.8	1
+122.9	1
+123	1
+123.1	1
+123.2	1
+123.3	1
+123.4	1
+123.5	1
+123.6	1
+123.7	1
+123.8	1
+123.9	1
+124	1
+124.1	1
+124.2	1
+124.3	1
+124.4	1
+124.5	1
+124.6	1
+124.7	1
+124.8	1
+124.9	1
+125	1
+125.1	1
+125.2	1
+125.3	1
+125.4	1
+125.5	1
+125.6	1
+125.7	1
+125.8	1
+125.9	1
+126	1
+126.1	1
+126.2	1
+126.3	1
+126.4	1
+126.5	1
+126.6	1
+126.7	1
+126.8	1
+126.9	1
+127	1
+127.1	1
+127.2	1
+127.3	1
+127.4	1
+127.5	1
+127.6	1
+127.7	1
+127.8	1
+127.9	1
+128	1
+128.1	1
+128.2	1
+128.3	1
+128.4	1
+128.5	1
+128.6	1
+128.7	1
+128.8	1
+128.9	1
+129	1
+129.1	1
+129.2	1
+129.3	1
+129.4	1
+129.5	1
+129.6	1
+129.7	1
+129.8	1
+129.9	1
+130	1
+130.1	1
+130.2	1
+130.3	1
+130.4	1
+130.5	1
+130.6	1
+130.7	1
+130.8	1
+130.9	1
+131	1
+131.1	1
+131.2	1
+131.3	1
+131.4	1
+131.5	1
+131.6	1
+131.7	1
+131.8	1
+131.9	1
+132	1
+132.1	1
+132.2	1
+132.3	1
+132.4	1
+132.5	1
+132.6	1
+132.7	1
+132.8	1
+132.9	1
+133	1
+133.1	1
+133.2	1
+133.3	1
+133.4	1
+133.5	1
+133.6	1
+133.7	1
+133.8	1
+133.9	1
+134	1
+134.1	1
+134.2	1
+134.3	1
+134.4	1
+134.5	1
+134.6	1
+134.7	1
+134.8	1
+134.9	1
+135	1
+135.1	1
+135.2	1
+135.3	1
+135.4	1
+135.5	1
+135.6	1
+135.7	1
+135.8	1
+135.9	1
+136	1
+136.1	1
+136.2	1
+136.3	1
+136.4	1
+136.5	1
+136.6	1
+136.7	1
+136.8	1
+136.9	1
+137	1
+137.1	1
+137.2	1
+137.3	1
+137.4	1
+137.5	1
+137.6	1
+137.7	1
+137.8	1
+137.9	1
+138	1
+138.1	1
+138.2	1
+138.3	1
+138.4	1
+138.5	1
+138.6	1
+138.7	1
+138.8	1
+138.9	1
+139	1
+139.1	1
+139.2	1
+139.3	1
+139.4	1
+139.5	1
+139.6	1
+139.7	1
+139.8	1
+139.9	1
+140	1
+140.1	1
+140.2	1
+140.3	1
+140.4	1
+140.5	1
+140.6	1
+140.7	1
+140.8	1
+140.9	1
+141	1
+141.1	1
+141.2	1
+141.3	1
+141.4	1
+141.5	1
+141.6	1
+141.7	1
+141.8	1
+141.9	1
+142	1
+142.1	1
+142.2	1
+142.3	1
+142.4	1
+142.5	1
+142.6	1
+142.7	1
+142.8	1
+142.9	1
+143	1
+143.1	1
+143.2	1
+143.3	1
+143.4	1
+143.5	1
+143.6	1
+143.7	1
+143.8	1
+143.9	1
+144	1
+144.1	1
+144.2	1
+144.3	1
+144.4	1
+144.5	1
+144.6	1
+144.7	1
+144.8	1
+144.9	1
+145	1
+145.1	1
+145.2	1
+145.3	1
+145.4	1
+145.5	1
+145.6	1
+145.7	1
+145.8	1
+145.9	1
+146	1
+146.1	1
+146.2	1
+146.3	1
+146.4	1
+146.5	1
+146.6	1
+146.7	1
+146.8	1
+146.9	1
+147	1
+147.1	1
+147.2	1
+147.3	1
+147.4	1
+147.5	1
+147.6	1
+147.7	1
+147.8	1
+147.9	1
+148	1
+148.1	1
+148.2	1
+148.3	1
+148.4	1
+148.5	1
+148.6	1
+148.7	1
+148.8	1
+148.9	1
+149	1
+149.1	1
+149.2	1
+149.3	1
+149.4	1
+149.5	1
+149.6	1
+149.7	1
+149.8	1
+149.9	1
+150	1
+150.1	1
+150.2	1
+150.3	1
+150.4	1
+150.5	1
+150.6	1
+150.7	1
+150.8	1
+150.9	1
+151	1
+151.1	1
+151.2	1
+151.3	1
+151.4	1
+151.5	1
+151.6	1
+151.7	1
+151.8	1
+151.9	1
+152	1
+152.1	1
+152.2	1
+152.3	1
+152.4	1
+152.5	1
+152.6	1
+152.7	1
+152.8	1
+152.9	1
+153	1
+153.1	1
+153.2	1
+153.3	1
+153.4	1
+153.5	1
+153.6	1
+153.7	1
+153.8	1
+153.9	1
+154	1
+154.1	1
+154.2	1
+154.3	1
+154.4	1
+154.5	1
+154.6	1
+154.7	1
+154.8	1
+154.9	1
+155	1
+155.1	1
+155.2	1
+155.3	1
+155.4	1
+155.5	1
+155.6	1
+155.7	1
+155.8	1
+155.9	1
+156	1
+156.1	1
+156.2	1
+156.3	1
+156.4	1
+156.5	1
+156.6	1
+156.7	1
+156.8	1
+156.9	1
+157	1
+157.1	1
+157.2	1
+157.3	1
+157.4	1
+157.5	1
+157.6	1
+157.7	1
+157.8	1
+157.9	1
+158	1
+158.1	1
+158.2	1
+158.3	1
+158.4	1
+158.5	1
+158.6	1
+158.7	1
+158.8	1
+158.9	1
+159	1
+159.1	1
+159.2	1
+159.3	1
+159.4	1
+159.5	1
+159.6	1
+159.7	1
+159.8	1
+159.9	1
+160	1
+160.1	1
+160.2	1
+160.3	1
+160.4	1
+160.5	1
+160.6	1
+160.7	1
+160.8	1
+160.9	1
+161	1
+161.1	1
+161.2	1
+161.3	1
+161.4	1
+161.5	1
+161.6	1
+161.7	1
+161.8	1
+161.9	1
+162	1
+162.1	1
+162.2	1
+162.3	1
+162.4	1
+162.5	1
+162.6	1
+162.7	1
+162.8	1
+162.9	1
+163	1
+163.1	1
+163.2	1
+163.3	1
+163.4	1
+163.5	1
+163.6	1
+163.7	1
+163.8	1
+163.9	1
+164	1
+164.1	1
+164.2	1
+164.3	1
+164.4	1
+164.5	1
+164.6	1
+164.7	1
+164.8	1
+164.9	1
+165	1
+165.1	1
+165.2	1
+165.3	1
+165.4	1
+165.5	1
+165.6	1
+165.7	1
+165.8	1
+165.9	1
+166	1
+166.1	1
+166.2	1
+166.3	1
+166.4	1
+166.5	1
+166.6	1
+166.7	1
+166.8	1
+166.9	1
+167	1
+167.1	1
+167.2	1
+167.3	1
+167.4	1
+167.5	1
+167.6	1
+167.7	1
+167.8	1
+167.9	1
+168	1
+168.1	1
+168.2	1
+168.3	1
+168.4	1
+168.5	1
+168.6	1
+168.7	1
+168.8	1
+168.9	1
+169	1
+169.1	1
+169.2	1
+169.3	1
+169.4	1
+169.5	1
+169.6	1
+169.7	1
+169.8	1
+169.9	1
+170	1
+170.1	1
+170.2	1
+170.3	1
+170.4	1
+170.5	1
+170.6	1
+170.7	1
+170.8	1
+170.9	1
+171	1
+171.1	1
+171.2	1
+171.3	1
+171.4	1
+171.5	1
+171.6	1
+171.7	1
+171.8	1
+171.9	1
+172	1
+172.1	1
+172.2	1
+172.3	1
+172.4	1
+172.5	1
+172.6	1
+172.7	1
+172.8	1
+172.9	1
+173	1
+173.1	1
+173.2	1
+173.3	1
+173.4	1
+173.5	1
+173.6	1
+173.7	1
+173.8	1
+173.9	1
+174	1
+174.1	1
+174.2	1
+174.3	1
+174.4	1
+174.5	1
+174.6	1
+174.7	1
+174.8	1
+174.9	1
+175	1
+175.1	1
+175.2	1
+175.3	1
+175.4	1
+175.5	1
+175.6	1
+175.7	1
+175.8	1
+175.9	1
+176	1
+176.1	1
+176.2	1
+176.3	1
+176.4	1
+176.5	1
+176.6	1
+176.7	1
+176.8	1
+176.9	1
+177	1
+177.1	1
+177.2	1
+177.3	1
+177.4	1
+177.5	1
+177.6	1
+177.7	1
+177.8	1
+177.9	1
+178	1
+178.1	1
+178.2	1
+178.3	1
+178.4	1
+178.5	1
+178.6	1
+178.7	1
+178.8	1
+178.9	1
+179	1
+179.1	1
+179.2	1
+179.3	1
+179.4	1
+179.5	1
+179.6	1
+179.7	1
+179.8	1
+179.9	1
+180	1
diff --git a/Inputs/DetectorConfiguration/AnnularS1.detector b/Inputs/DetectorConfiguration/AnnularS1.detector
index 2733b1795fc5a8de118ce799e654e055af0cf0da..145d0667d91151ae2d72c5224ae92b75eb9cfccf 100644
--- a/Inputs/DetectorConfiguration/AnnularS1.detector
+++ b/Inputs/DetectorConfiguration/AnnularS1.detector
@@ -1,7 +1,18 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
+GeneralTarget
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1
+Target
+        THICKNESS= 309.278350515
+        RADIUS= 7.5
+        MATERIAL= CD2
+        X= 0
+        Y= 0
+        Z= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
 AnnularS1
-        Z=    -158.7
-        RMIN=   24
-        RMAX=   48
+        Z=   100 
+        VIS= all	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
+AnnularS1
+        Z=   -100 
         VIS= all	
-
diff --git a/Inputs/DetectorConfiguration/DUMMYDetector.detector b/Inputs/DetectorConfiguration/DUMMYDetector.detector
new file mode 100755
index 0000000000000000000000000000000000000000..135a20792d276c041a2fee553bd6cab2a53039a3
--- /dev/null
+++ b/Inputs/DetectorConfiguration/DUMMYDetector.detector
@@ -0,0 +1,25 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+TheDUMMYDetector
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DUMMYDetector
+	THETA= 0
+	PHI= 0
+	R= 150
+	Thickness= 20
+	Radius= 50
+	Material= material1
+	LeadThickness= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+DUMMYDetector
+	THETA= 90
+	PHI= 0
+	R= 175
+	Thickness= 100
+	Radius= 50
+	Material= material2
+	LeadThickness= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Avaible material:
+% material1
+% material2
diff --git a/Inputs/DetectorConfiguration/MUST2.detector b/Inputs/DetectorConfiguration/MUST2.detector
index 4a7ebad47d22ce1fd369b06a54b37fdfde88b633..bf64823e4fdb1b16bc850eff3c80161fb5d24c59 100644
--- a/Inputs/DetectorConfiguration/MUST2.detector
+++ b/Inputs/DetectorConfiguration/MUST2.detector
@@ -22,3 +22,13 @@ M2Telescope
 	CSI= 0
 	VIS= all					
 
+%%%%%%% Telescope 2 %%%%%%%			
+M2Telescope
+	THETA= -40
+	PHI= 0
+	R= 150
+	BETA= 0 0 0
+	SI= 1
+	SILI= 1
+	CSI= 1
+	VIS= all			
diff --git a/Inputs/DetectorConfiguration/Riken_30mm.detector b/Inputs/DetectorConfiguration/Riken_30mm.detector
deleted file mode 100644
index 9b4ab4aec4e3b209c26c16fe6df7bf8603191609..0000000000000000000000000000000000000000
--- a/Inputs/DetectorConfiguration/Riken_30mm.detector
+++ /dev/null
@@ -1,121 +0,0 @@
-%%%%%%%%%%%Target%%%%%%%%%%%%%%%%%%%1
-%Thickness in micrometer
-%Radius in mm
-%Temperature in K, Pressure in bar
-%Material name according to the target library
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-GeneralTarget
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%Target
-	THICKNESS= 1
-	RADIUS=	45
-	MATERIAL= CD2
-	X= 0
-	Y= 0
-	Z= 0
-	
-CryoTarget
-	THICKNESS= 3
-	RADIUS=	45
-	TEMPERATURE= 26
-	PRESSURE= 1
-	MATERIAL= D2	
-	WINDOWSTHICKNESS= 0
-	WINDOWSMATERIAL= Mylar
-	X= 0
-	Y= 0
-	Z= 0			
-			
-			
-%%%%%%%%%%%%%%%%%%%%%			
-MUST2Array			
-%%%%%%% Telescope 1 %%%%%%%			
-M2Telescope 			
-X1_Y1=	10.85	105.03	146.16
-X1_Y128=	22.8	9.84	175.95
-X128_Y1=	104.09	105.03	108.76
-X128_Y128=	116.04	9.84	138.55
-SI=	1		
-SILI=	0		
-CSI=	1		
-VIS=	all		
-			
-%%%%%%% Telescope 2 %%%%%%%			
-M2Telescope 			
-X1_Y1=	-116.04	9.84	138.55
-X1_Y128=	-22.8	9.84	175.95
-X128_Y1=	-104.09	105.03	108.76
-X128_Y128=	-10.85	105.03	146.16
-SI=	1		
-SILI=	0		
-CSI=	1		
-VIS=	all		
-			
-%%%%%%% Telescope 3 %%%%%%%			
-M2Telescope 			
-X1_Y1=	-10.85	-105.03	146.16
-X1_Y128=	-22.8	-9.84	175.95
-X128_Y1=	-104.09	-105.03	108.76
-X128_Y128=	-116.04	-9.84	138.55
-SI=	1		
-SILI=	0		
-CSI=	1		
-VIS=	all		
-			
-%%%%%%% Telescope 4 %%%%%%%			
-M2Telescope 			
-X1_Y1=	116.04	-9.84	138.55
-X1_Y128=	22.8	-9.84	175.95
-X128_Y1=	104.09	-105.03	108.76
-X128_Y128=	10.85	-105.03	146.16
-SI=	1		
-SILI=	0		
-CSI=	1		
-VIS=	all		
-			
-%%%%%%% Telescope 5 %%%%%%%			
-M2Telescope 			
-X1_Y1=	-50.23	-50.23	325
-X1_Y128=	50.23	-50.23	325
-X128_Y1=	-50.23	50.23	325
-X128_Y128=	50.23	50.23	325
-SI=	1		
-SILI=	0		
-CSI=	1		
-VIS=	all		
-			
-%%%%%%%%%%%%%%%%%%%%			
-AddThinSi			
-%%%%%%%%% Det 1 %%%%%%%%			
-ThinSi			
-A=	18.39	9.66	143.67
-B=	65.26	9.66	124.87
-C=	59.44	56.09	110.34
-D=	12.57	56.09	129.14
-			
-%%%%%%%%% Det 2 %%%%%%%%			
-ThinSi			
-A=	-12.57	56.09	129.14
-B=	-59.44	56.09	110.34
-C=	-65.26	9.66	124.87
-D=	-18.39	9.66	143.67
-			
-%%%%%%%%% Det 3 %%%%%%%%			
-ThinSi			
-A=	-18.39	-9.66	143.67
-B=	-65.26	-9.66	124.87
-C=	-59.44	-56.09	110.34
-D=	-12.57	-56.09	129.14
-			
-%%%%%%%%% Det 4 %%%%%%%%			
-ThinSi			
-A=	12.57	-56.09	129.14
-B=	59.44	-56.09	110.34
-C=	65.26	-9.66	124.87
-D=	18.39	-9.66	143.67
-			
-
-			
-
-
diff --git a/Inputs/DetectorConfiguration/Riken_65mm.detector b/Inputs/DetectorConfiguration/Riken_65mm.detector
index 0c25c3e988018a4baad82e44162fc84aac8650e2..bee456b3d8bd5104bcb017232ee3a0cc5bc03615 100644
--- a/Inputs/DetectorConfiguration/Riken_65mm.detector
+++ b/Inputs/DetectorConfiguration/Riken_65mm.detector
@@ -11,6 +11,7 @@ GeneralTarget
 	THICKNESS= 1
 	RADIUS=	45
 	MATERIAL= CD2
+	ANGLE= 45
 	X= 0
 	Y= 0
 	Z= 0
@@ -75,10 +76,10 @@ VIS=	all
 			
 %%%%%%% Telescope 5 %%%%%%%			
 M2Telescope 			
-X1_Y1=		-50.23	-50.23	325
-X1_Y128=	50.23	-50.23	325
-X128_Y1=	-50.23	50.23	325
-X128_Y128=	50.23	50.23	325
+X1_Y1=		-50.23	-50.23	365
+X1_Y128=	50.23	-50.23	365
+X128_Y1=	-50.23	50.23	365
+X128_Y128=	50.23	50.23	365
 SI=	1		
 SILI=	0		
 CSI=	1		
@@ -144,5 +145,25 @@ B=	58.66	-56.29	70.79
 C=	64.48	-9.85	85.31
 D=	17.61	-9.85	104.11
 			
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ScintillatorPlastic
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Plastic
+	THETA= 0
+	PHI= 0
+	R= 318
+	Thickness= 20
+	Radius= 20
+	Scintillator= BC400
+	LeadThickness= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Plastic
+	THETA= 0
+	PHI= 0
+	R= 343
+	Thickness= 30
+	Radius= 20
+	Scintillator= BC400
+	LeadThickness= 2
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
diff --git a/Inputs/DetectorConfiguration/e530.detector b/Inputs/DetectorConfiguration/e530.detector
index 83a8642e9ae43a98fd11d52e3721815e7ca4f02c..fbe1240194f44a603020ddcc03edf293037381ea 100644
--- a/Inputs/DetectorConfiguration/e530.detector
+++ b/Inputs/DetectorConfiguration/e530.detector
@@ -22,14 +22,13 @@ Target
 	THICKNESS= 309.278350515
 	RADIUS=	7.5
 	MATERIAL= CD2
+	ANGLE= 45
 	X= 0
 	Y= 0
 	Z= 40
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
 AnnularS1
         Z=    -158.7
-        RMIN=   24
-        RMAX=   48
         VIS= all	
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%	
 MUST2Array
diff --git a/Inputs/DetectorConfiguration/gaspardTestSpheric.detector b/Inputs/DetectorConfiguration/gaspardTestSpheric.detector
index 5465fea0426fe14a09e3bedd7c97de63b6382e72..91d535366e794c964708febb232c9fa41ad4ed2c 100644
--- a/Inputs/DetectorConfiguration/gaspardTestSpheric.detector
+++ b/Inputs/DetectorConfiguration/gaspardTestSpheric.detector
@@ -9,9 +9,11 @@
 GeneralTarget
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Target
-	THICKNESS= 0.0001
+	THICKNESS= 10.3
+	ANGLE= 0
 	RADIUS=	12
 	MATERIAL= CD2
+	NBLAYERS= 50
 	X= 0
 	Y= 0
 	Z= 0
diff --git a/Inputs/DetectorConfiguration/plastic.detector b/Inputs/DetectorConfiguration/plastic.detector
index 138a7f665cb5624ba7e36280e99ab848f141516c..71fd2e95bfcb1028cc57920f0983fb8358eea0d4 100644
--- a/Inputs/DetectorConfiguration/plastic.detector
+++ b/Inputs/DetectorConfiguration/plastic.detector
@@ -1,5 +1,3 @@
-%Fichier de configuration manip E225
-
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 ScintillatorPlastic
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -9,6 +7,7 @@ Plastic
 	R= 150
 	Thickness= 20
 	Radius= 50
+	Scintillator= BC400
 	LeadThickness= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Plastic
@@ -17,5 +16,12 @@ Plastic
 	R= 175
 	Thickness= 20
 	Radius= 50
+	Scintillator= BC452_5
 	LeadThickness= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Avaible material:
+% BC400
+% BC452_2  : BC400 with 2% Pb
+% BC452_5  : BC400 with 5% Pb
+% BC452_10 : BC400 with 10% Pb
diff --git a/Inputs/dEdX/3He_Al.txt b/Inputs/EnergyLoss/3He_Al.txt
similarity index 100%
rename from Inputs/dEdX/3He_Al.txt
rename to Inputs/EnergyLoss/3He_Al.txt
diff --git a/Inputs/dEdX/3He_CsI.txt b/Inputs/EnergyLoss/3He_CsI.txt
similarity index 100%
rename from Inputs/dEdX/3He_CsI.txt
rename to Inputs/EnergyLoss/3He_CsI.txt
diff --git a/Inputs/dEdX/3He_D2gaz_1b_26K.txt b/Inputs/EnergyLoss/3He_D2gaz_1b_26K.txt
similarity index 100%
rename from Inputs/dEdX/3He_D2gaz_1b_26K.txt
rename to Inputs/EnergyLoss/3He_D2gaz_1b_26K.txt
diff --git a/Inputs/dEdX/3He_Mylar.txt b/Inputs/EnergyLoss/3He_Mylar.txt
similarity index 100%
rename from Inputs/dEdX/3He_Mylar.txt
rename to Inputs/EnergyLoss/3He_Mylar.txt
diff --git a/Inputs/dEdX/3He_Si.txt b/Inputs/EnergyLoss/3He_Si.txt
similarity index 100%
rename from Inputs/dEdX/3He_Si.txt
rename to Inputs/EnergyLoss/3He_Si.txt
diff --git a/Inputs/EnergyLoss/deuton_cd2.txt b/Inputs/EnergyLoss/deuton_cd2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2fe13fa413e0bc2a8965b082f90fd3a4fc862e0b
--- /dev/null
+++ b/Inputs/EnergyLoss/deuton_cd2.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0212619	0.001000	0.0265849	0.001000	0.0349196	0.001000	0.0349196	0.001000	0.0229095	0.001000	0.00367538	
+0.002000	0.025331	0.002000	0.0316497	0.002000	0.0396059	0.002000	0.0396059	0.002000	0.0291996	0.002000	0.00245012	
+0.005000	0.033267	0.005000	0.0415734	0.005000	0.0480545	0.005000	0.0480545	0.005000	0.0402398	0.005000	0.00133354	
+0.008000	0.0387088	0.008000	0.0483854	0.008000	0.0534967	0.008000	0.0534967	0.008000	0.0474349	0.008000	0.000950509	
+0.010000	0.0416759	0.010000	0.0520884	0.010000	0.0563611	0.010000	0.0563611	0.010000	0.0512881	0.010000	0.00080031	
+0.015000	0.0502657	0.015000	0.0601465	0.015000	0.062076	0.015000	0.062076	0.015000	0.0595587	0.015000	0.000587807	
+0.020000	0.0573036	0.020000	0.0666561	0.020000	0.0665431	0.020000	0.0665431	0.020000	0.0661864	0.020000	0.000469732	
+0.025000	0.0631244	0.025000	0.0720883	0.025000	0.0702577	0.025000	0.0702577	0.025000	0.0716946	0.025000	0.000393705	
+0.030000	0.0679066	0.030000	0.0766875	0.030000	0.0738343	0.030000	0.0738343	0.030000	0.0763472	0.030000	0.000340288	
+0.035000	0.0717679	0.035000	0.0806006	0.035000	0.0768226	0.035000	0.0768226	0.035000	0.0803001	0.035000	0.000300518	
+0.040000	0.0748013	0.040000	0.0839257	0.040000	0.0793222	0.040000	0.0793222	0.040000	0.0836561	0.040000	0.000269655	
+0.045000	0.0770898	0.045000	0.0867338	0.045000	0.0814053	0.045000	0.0814053	0.045000	0.0864889	0.045000	0.000244948	
+0.050000	0.0787138	0.050000	0.0890801	0.050000	0.0831278	0.050000	0.0831278	0.050000	0.0888554	0.050000	0.000224684	
+0.055000	0.0797523	0.055000	0.09101	0.055000	0.0845344	0.055000	0.0845344	0.055000	0.0908022	0.055000	0.000207737	
+0.060000	0.080283	0.060000	0.0925627	0.060000	0.0856624	0.060000	0.0856624	0.060000	0.0923694	0.060000	0.000193337	
+0.070000	0.0801177	0.070000	0.0946742	0.070000	0.0872044	0.070000	0.0872044	0.070000	0.0945041	0.070000	0.000170138	
+0.080000	0.0787637	0.080000	0.0956641	0.080000	0.087962	0.080000	0.087962	0.080000	0.0955119	0.080000	0.000152222	
+0.090000	0.0766704	0.090000	0.0957507	0.090000	0.0880983	0.090000	0.0880983	0.090000	0.0956128	0.090000	0.000137936	
+0.100000	0.0741784	0.100000	0.0951269	0.100000	0.0877451	0.100000	0.0877451	0.100000	0.0950007	0.100000	0.000126257	
+0.120000	0.0688744	0.120000	0.0923935	0.120000	0.0859813	0.120000	0.0859813	0.120000	0.0922852	0.120000	0.000108265	
+0.140000	0.0639 	0.140000	0.0885087	0.140000	0.0833176	0.140000	0.0833176	0.140000	0.0884137	0.140000	9.50087e-05	
+0.160000	0.0595816	0.160000	0.0841611	0.160000	0.0801843	0.160000	0.0801843	0.160000	0.0840763	0.160000	8.48081e-05	
+0.180000	0.055933	0.180000	0.079763	0.180000	0.0768615	0.180000	0.0768615	0.180000	0.0796863	0.180000	7.66986e-05	
+0.200000	0.052863	0.200000	0.0755389	0.200000	0.0735258	0.200000	0.0735258	0.200000	0.0754688	0.200000	7.00864e-05	
+0.250000	0.0470328	0.250000	0.0662838	0.250000	0.0657209	0.250000	0.0657209	0.250000	0.066226	0.250000	5.7861e-05	
+0.300000	0.0428758	0.300000	0.0589624	0.300000	0.0590735	0.300000	0.0590735	0.300000	0.0589129	0.300000	4.94376e-05	
+0.350000	0.0396837	0.350000	0.053215	0.350000	0.0535872	0.350000	0.0535872	0.350000	0.0531717	0.350000	4.32593e-05	
+0.400000	0.0370952	0.400000	0.0486407	0.400000	0.0490785	0.400000	0.0490785	0.400000	0.0486022	0.400000	3.85221e-05	
+0.450000	0.0349167	0.450000	0.0449277	0.450000	0.0453471	0.450000	0.0453471	0.450000	0.0448929	0.450000	3.47673e-05	
+0.500000	0.0330365	0.500000	0.0418523	0.500000	0.0422233	0.500000	0.0422233	0.500000	0.0418205	0.500000	3.17136e-05	
+0.600000	0.0299151	0.600000	0.0370321	0.600000	0.0372993	0.600000	0.0372993	0.600000	0.0370051	0.600000	2.7038e-05	
+0.700000	0.0273993	0.700000	0.0333931	0.700000	0.0335853	0.700000	0.0335853	0.700000	0.0333695	0.700000	2.36176e-05	
+0.800000	0.0253126	0.800000	0.0305188	0.800000	0.0306671	0.800000	0.0306671	0.800000	0.0304978	0.800000	2.10005e-05	
+0.900000	0.0235471	0.900000	0.0281721	0.900000	0.028299	0.900000	0.028299	0.900000	0.0281532	0.900000	1.89298e-05	
+1.000000	0.0220303	1.000000	0.0262083	1.000000	0.0263281	1.000000	0.0263281	1.000000	0.026191	1.000000	1.72484e-05	
+1.250000	0.0190239	1.250000	0.0224276	1.250000	0.0225608	1.250000	0.0225608	1.250000	0.0224135	1.250000	1.41571e-05	
+1.500000	0.0167842	1.500000	0.0196835	1.500000	0.0198441	1.500000	0.0198441	1.500000	0.0196714	1.500000	1.20416e-05	
+1.750000	0.0150456	1.750000	0.0175838	1.750000	0.0177716	1.750000	0.0177716	1.750000	0.0175733	1.750000	1.04982e-05	
+2.000000	0.0136537	2.000000	0.0159176	2.000000	0.0161286	2.000000	0.0161286	2.000000	0.0159083	2.000000	9.31995e-06	
+2.250000	0.0125124	2.250000	0.0145591	2.250000	0.0147888	2.250000	0.0147888	2.250000	0.0145507	2.250000	8.38949e-06	
+2.500000	0.0115082	2.500000	0.013428	2.500000	0.0136722	2.500000	0.0136722	2.500000	0.0134204	2.500000	7.63515e-06	
+3.000000	0.0100487	3.000000	0.0116475	3.000000	0.0119113	3.000000	0.0119113	3.000000	0.011641	3.000000	6.48464e-06	
+3.500000	0.00894107	3.500000	0.0103055	3.500000	0.0105802	3.500000	0.0105802	3.500000	0.0102998	3.500000	5.64668e-06	
+4.000000	0.00806927	4.000000	0.00925497	4.000000	0.009535	4.000000	0.009535	4.000000	0.00924996	4.000000	5.00786e-06	
+4.500000	0.00736381	4.500000	0.0084087	4.500000	0.00869045	4.500000	0.00869045	4.500000	0.0084042	4.500000	4.50398e-06	
+5.000000	0.0067803	5.000000	0.00771138	5.000000	0.00799256	5.000000	0.00799256	5.000000	0.00770728	5.000000	4.09589e-06	
+5.500000	0.00628901	5.500000	0.0071262	5.500000	0.00740533	5.500000	0.00740533	5.500000	0.00712244	5.500000	3.75832e-06	
+6.000000	0.00586925	6.000000	0.00662767	6.000000	0.00690381	6.000000	0.00690381	6.000000	0.00662419	6.000000	3.47424e-06	
+6.500000	0.00550616	6.500000	0.00619755	6.500000	0.00647009	6.500000	0.00647009	6.500000	0.00619432	6.500000	3.23172e-06	
+7.000000	0.00518876	7.000000	0.00582243	7.000000	0.00609099	7.000000	0.00609099	7.000000	0.00581941	7.000000	3.02213e-06	
+7.500000	0.00490876	7.500000	0.00549222	7.500000	0.00575659	7.500000	0.00575659	7.500000	0.00548938	7.500000	2.83912e-06	
+8.000000	0.0046598	8.000000	0.00519917	8.000000	0.00545925	8.000000	0.00545925	8.000000	0.00519649	8.000000	2.67788e-06	
+8.500000	0.00443689	8.500000	0.00493723	8.500000	0.00519299	8.500000	0.00519299	8.500000	0.0049347	8.500000	2.53467e-06	
+9.000000	0.00423606	9.000000	0.00470163	9.000000	0.00495307	9.000000	0.00495307	9.000000	0.00469923	9.000000	2.40661e-06	
+9.500000	0.00405412	9.500000	0.00448851	9.500000	0.0047357	9.500000	0.0047357	9.500000	0.00448622	9.500000	2.29137e-06	
+10.000000	0.00388847	10.000000	0.00444633	10.000000	0.00453776	10.000000	0.00453776	10.000000	0.00444415	10.000000	2.1871e-06	
+11.000000	0.00359787	11.000000	0.00412019	11.000000	0.00418625	11.000000	0.00418628	11.000000	0.00411819	11.000000	2.00567e-06	
+12.000000	0.00335108	12.000000	0.00384175	12.000000	0.00388831	12.000000	0.00388837	12.000000	0.00383989	12.000000	1.85308e-06	
+13.000000	0.00313872	13.000000	0.00360113	13.000000	0.00363257	13.000000	0.00363261	13.000000	0.00359941	13.000000	1.7229e-06	
+14.000000	0.00295393	14.000000	0.00339103	14.000000	0.00341064	14.000000	0.00341063	14.000000	0.00338942	14.000000	1.61046e-06	
+15.000000	0.00279158	15.000000	0.00320592	15.000000	0.00321615	15.000000	0.00321616	15.000000	0.0032044	15.000000	1.51233e-06	
+16.000000	0.00264774	16.000000	0.00304153	16.000000	0.00304443	16.000000	0.00304439	16.000000	0.0030401	16.000000	1.42591e-06	
+17.000000	0.00251937	17.000000	0.00289452	17.000000	0.00289173	17.000000	0.0028916	17.000000	0.00289317	17.000000	1.34919e-06	
+18.000000	0.00240406	18.000000	0.00276223	18.000000	0.00275501	18.000000	0.00275483	18.000000	0.00276095	18.000000	1.28061e-06	
+19.000000	0.00229987	19.000000	0.00264253	19.000000	0.0026319	19.000000	0.00263172	19.000000	0.00264131	19.000000	1.21892e-06	
+20.000000	0.00220524	20.000000	0.00253368	20.000000	0.00252054	20.000000	0.00252035	20.000000	0.00253252	20.000000	1.16313e-06	
+21.000000	0.00211888	21.000000	0.00243425	21.000000	0.00241935	21.000000	0.00241915	21.000000	0.00243314	21.000000	1.1124e-06	
+22.000000	0.00203975	22.000000	0.00234305	22.000000	0.00232702	22.000000	0.00232683	22.000000	0.00234198	22.000000	1.06609e-06	
+23.000000	0.00196695	23.000000	0.00225908	23.000000	0.00224249	23.000000	0.00224229	23.000000	0.00225805	23.000000	1.02361e-06	
+24.000000	0.00189973	24.000000	0.0021815	24.000000	0.00216491	24.000000	0.00216463	24.000000	0.00218052	24.000000	9.84523e-07	
+25.000000	0.00183747	25.000000	0.0021096	25.000000	0.00209347	25.000000	0.00209307	25.000000	0.00210865	25.000000	9.4842e-07	
+27.000000	0.00172574	27.000000	0.00198048	27.000000	0.0019662	27.000000	0.0019657	27.000000	0.0019796	27.000000	8.83889e-07	
+29.000000	0.00162829	29.000000	0.00186778	29.000000	0.00185641	29.000000	0.00185591	29.000000	0.00186695	29.000000	8.27878e-07	
+31.000000	0.00154249	31.000000	0.0017685	31.000000	0.00175939	31.000000	0.00175889	31.000000	0.00176772	31.000000	7.78786e-07	
+33.000000	0.00146633	33.000000	0.00168036	33.000000	0.00167199	33.000000	0.00167152	33.000000	0.00167963	33.000000	7.3539e-07	
+35.000000	0.00139825	35.000000	0.00160156	35.000000	0.00159381	35.000000	0.00159339	35.000000	0.00160086	35.000000	6.96743e-07	
+38.000000	0.00130863	38.000000	0.00149781	38.000000	0.00149107	38.000000	0.0014905	38.000000	0.00149716	38.000000	6.46082e-07	
+41.000000	0.00123121	41.000000	0.00140821	41.000000	0.00140219	41.000000	0.00140161	41.000000	0.00140761	41.000000	6.02528e-07	
+44.000000	0.00116363	44.000000	0.00133001	44.000000	0.00132453	44.000000	0.00132399	44.000000	0.00132945	44.000000	5.64669e-07	
+47.000000	0.00110407	47.000000	0.00126114	47.000000	0.00125611	47.000000	0.0012556	47.000000	0.00126061	47.000000	5.31443e-07	
+50.000000	0.00105118	50.000000	0.00120001	50.000000	0.00119534	50.000000	0.00119487	50.000000	0.00119951	50.000000	5.02041e-07	
+55.000000	0.000974995	55.000000	0.00111204	55.000000	0.00110784	55.000000	0.0011074	55.000000	0.00111158	55.000000	4.5988e-07	
+60.000000	0.000910668	60.000000	0.00103786	60.000000	0.00103403	60.000000	0.00103359	60.000000	0.00103743	60.000000	4.24468e-07	
+65.000000	0.000855583	65.000000	0.000974428	65.000000	0.000970947	65.000000	0.000970435	65.000000	0.000974034	65.000000	3.94289e-07	
+70.000000	0.000807845	70.000000	0.000919548	70.000000	0.000916217	70.000000	0.000915751	70.000000	0.00091918	70.000000	3.68251e-07	
+75.000000	0.000766048	75.000000	0.000871579	75.000000	0.000868364	75.000000	0.000867924	75.000000	0.000871233	75.000000	3.45548e-07	
+80.000000	0.000729126	80.000000	0.000829279	80.000000	0.00082614	80.000000	0.000825724	80.000000	0.000828953	80.000000	3.2557e-07	
+85.000000	0.000696255	85.000000	0.000791689	85.000000	0.000788598	85.000000	0.000788205	85.000000	0.000791381	85.000000	3.07851e-07	
+90.000000	0.000666789	90.000000	0.000758057	90.000000	0.000754997	90.000000	0.00075462	90.000000	0.000757765	90.000000	2.92023e-07	
+95.000000	0.000640214	95.000000	0.000727782	95.000000	0.000724823	95.000000	0.000724375	95.000000	0.000727504	95.000000	2.77796e-07	
+100.000000	0.000616115	100.000000	0.000700381	100.000000	0.00069742	100.000000	0.000696992	100.000000	0.000700116	100.000000	2.64936e-07	
+105.000000	0.000594153	105.000000	0.00067546	105.000000	0.000672488	105.000000	0.000672078	105.000000	0.000675207	105.000000	2.53253e-07	
+110.000000	0.00057405	110.000000	0.000652693	110.000000	0.000649707	110.000000	0.000649312	110.000000	0.00065245	110.000000	2.4259e-07	
+115.000000	0.000555573	115.000000	0.00063181	115.000000	0.000628805	115.000000	0.000628425	115.000000	0.000631578	115.000000	2.32819e-07	
+120.000000	0.000538529	120.000000	0.000612585	120.000000	0.000609559	120.000000	0.000609193	120.000000	0.000612362	120.000000	2.2383e-07	
+125.000000	0.000522752	125.000000	0.000594827	125.000000	0.00059178	125.000000	0.000591425	125.000000	0.000594611	125.000000	2.15533e-07	
+130.000000	0.000508103	130.000000	0.000578372	130.000000	0.000575302	130.000000	0.000574959	130.000000	0.000578164	130.000000	2.07849e-07	
+135.000000	0.000494463	135.000000	0.000563081	135.000000	0.000559982	135.000000	0.000559656	135.000000	0.00056288	135.000000	2.00712e-07	
+140.000000	0.000481727	140.000000	0.000548833	140.000000	0.000545746	140.000000	0.000545397	140.000000	0.000548639	140.000000	1.94065e-07	
+145.000000	0.000469806	145.000000	0.000535526	145.000000	0.000532459	145.000000	0.000532078	145.000000	0.000535338	145.000000	1.87859e-07	
+150.000000	0.000458624	150.000000	0.000523068	150.000000	0.000519978	150.000000	0.000519609	150.000000	0.000522886	150.000000	1.82051e-07	
+155.000000	0.000442878	155.000000	0.00051138	155.000000	0.000508266	155.000000	0.000507911	155.000000	0.000511204	155.000000	1.76603e-07	
+160.000000	0.000433649	160.000000	0.000500393	160.000000	0.000497263	160.000000	0.000496914	160.000000	0.000500221	160.000000	1.71482e-07	
+165.000000	0.000424946	165.000000	0.000490044	165.000000	0.000486898	165.000000	0.000486557	165.000000	0.000489878	165.000000	1.6666e-07	
+170.000000	0.000416725	170.000000	0.000480281	170.000000	0.000477119	170.000000	0.000476787	170.000000	0.000480119	170.000000	1.62111e-07	
+175.000000	0.000408946	175.000000	0.000471053	175.000000	0.000467879	175.000000	0.000467554	175.000000	0.000470896	175.000000	1.57812e-07	
+180.000000	0.000401574	180.000000	0.000462319	180.000000	0.000459133	180.000000	0.000458815	180.000000	0.000462166	180.000000	1.53742e-07	
+185.000000	0.000394577	185.000000	0.00045404	185.000000	0.000450844	185.000000	0.000450532	185.000000	0.00045389	185.000000	1.49885e-07	
+190.000000	0.000387927	190.000000	0.00044618	190.000000	0.000442977	190.000000	0.000442671	190.000000	0.000446034	190.000000	1.46222e-07	
+195.000000	0.000381599	195.000000	0.00043871	195.000000	0.000435496	195.000000	0.000435199	195.000000	0.000438567	195.000000	1.4274e-07	
+200.000000	0.00037557	200.000000	0.0004316	200.000000	0.000428379	200.000000	0.00042809	200.000000	0.00043146	200.000000	1.39426e-07	
+210.000000	0.000364325	210.000000	0.000418362	210.000000	0.000415179	210.000000	0.000414856	210.000000	0.000418229	210.000000	1.33253e-07	
+220.000000	0.000354048	220.000000	0.00040629	220.000000	0.000403115	220.000000	0.000402793	220.000000	0.000406162	220.000000	1.2762e-07	
+230.000000	0.000344618	230.000000	0.000395237	230.000000	0.000392062	230.000000	0.000391753	230.000000	0.000395114	230.000000	1.2246e-07	
+240.000000	0.000335934	240.000000	0.000385079	240.000000	0.000381912	240.000000	0.000381612	240.000000	0.000384961	240.000000	1.17713e-07	
+250.000000	0.000327909	250.000000	0.000375712	250.000000	0.000372558	250.000000	0.000372266	250.000000	0.000375599	250.000000	1.13333e-07	
+260.000000	0.000320472	260.000000	0.000367049	260.000000	0.00036391	260.000000	0.000363626	260.000000	0.00036694	260.000000	1.09276e-07	
+270.000000	0.00031356	270.000000	0.000359014	270.000000	0.000355893	270.000000	0.000355616	270.000000	0.000358908	270.000000	1.0551e-07	
+280.000000	0.000307119	280.000000	0.00035154	280.000000	0.000348441	280.000000	0.000348171	280.000000	0.000351438	280.000000	1.02002e-07	
+290.000000	0.000301103	290.000000	0.000344573	290.000000	0.000341494	290.000000	0.000341234	290.000000	0.000344474	290.000000	9.87279e-08	
+300.000000	0.000295472	300.000000	0.000338062	300.000000	0.000335028	300.000000	0.000334756	300.000000	0.000337966	300.000000	9.56639e-08	
+310.000000	0.000290189	310.000000	0.000331966	310.000000	0.000328984	310.000000	0.000328693	310.000000	0.000331873	310.000000	9.27903e-08	
+320.000000	0.000285223	320.000000	0.000326246	320.000000	0.000323293	320.000000	0.000323008	320.000000	0.000326156	320.000000	9.00898e-08	
+330.000000	0.000280548	330.000000	0.000320869	330.000000	0.000317945	330.000000	0.000317668	330.000000	0.000320782	330.000000	8.7547e-08	
+340.000000	0.000276139	340.000000	0.000315807	340.000000	0.000312915	340.000000	0.000312643	340.000000	0.000315722	340.000000	8.51483e-08	
+350.000000	0.000271973	350.000000	0.000311032	350.000000	0.000308174	350.000000	0.000307906	350.000000	0.000310949	350.000000	8.28818e-08	
+360.000000	0.000268032	360.000000	0.000306522	360.000000	0.000303698	360.000000	0.000303435	360.000000	0.000306441	360.000000	8.07366e-08	
+370.000000	0.000264298	370.000000	0.000302255	370.000000	0.000299439	370.000000	0.000299181	370.000000	0.000302177	370.000000	7.87032e-08	
+380.000000	0.000260756	380.000000	0.000298214	380.000000	0.000295408	380.000000	0.000295153	380.000000	0.000298137	380.000000	7.6773e-08	
+390.000000	0.000257391	390.000000	0.000294381	390.000000	0.000291586	390.000000	0.000291335	390.000000	0.000294306	390.000000	7.49382e-08	
+400.000000	0.000254192	400.000000	0.000290741	400.000000	0.000287958	400.000000	0.000287711	400.000000	0.000290668	400.000000	7.31918e-08	
+410.000000	0.000251146	410.000000	0.000287281	410.000000	0.000284512	410.000000	0.000284268	410.000000	0.000287209	410.000000	7.15275e-08	
+420.000000	0.000248243	420.000000	0.000283987	420.000000	0.000281234	420.000000	0.000280993	420.000000	0.000283917	420.000000	6.99397e-08	
+430.000000	0.000245473	430.000000	0.000280849	430.000000	0.000278112	430.000000	0.000277874	430.000000	0.000280781	430.000000	6.8423e-08	
+440.000000	0.000242828	440.000000	0.000277857	440.000000	0.000275133	440.000000	0.000274901	440.000000	0.00027779	440.000000	6.69728e-08	
+450.000000	0.000240301	450.000000	0.000275	450.000000	0.000272294	450.000000	0.000272065	450.000000	0.000274935	450.000000	6.55848e-08	
+460.000000	0.000237883	460.000000	0.000272271	460.000000	0.000269592	460.000000	0.000269356	460.000000	0.000272207	460.000000	6.4255e-08	
+470.000000	0.000235568	470.000000	0.000269661	470.000000	0.000267015	470.000000	0.000266767	470.000000	0.000269599	470.000000	6.29797e-08	
+480.000000	0.00023335	480.000000	0.000267164	480.000000	0.000264544	480.000000	0.000264291	480.000000	0.000267102	480.000000	6.17557e-08	
+490.000000	0.000231223	490.000000	0.000264772	490.000000	0.000262172	490.000000	0.00026192	490.000000	0.000264711	490.000000	6.05799e-08	
+500.000000	0.000229183	500.000000	0.000262479	500.000000	0.000259895	500.000000	0.000259649	500.000000	0.00026242	500.000000	5.94494e-08	
+520.000000	0.000225341	520.000000	0.00025817	520.000000	0.000255623	520.000000	0.000255382	520.000000	0.000258113	520.000000	5.73143e-08	
+540.000000	0.00022179	540.000000	0.000254195	540.000000	0.000251686	540.000000	0.000251449	540.000000	0.00025414	540.000000	5.53318e-08	
+560.000000	0.000218501	560.000000	0.00025052	560.000000	0.000248048	560.000000	0.000247815	560.000000	0.000250467	560.000000	5.34861e-08	
+580.000000	0.000215448	580.000000	0.000247115	580.000000	0.000244678	580.000000	0.000244449	580.000000	0.000247063	580.000000	5.17632e-08	
+600.000000	0.000212608	600.000000	0.000243952	600.000000	0.00024155	600.000000	0.000241325	600.000000	0.000243902	600.000000	5.01512e-08	
+620.000000	0.000209962	620.000000	0.000241011	620.000000	0.000238641	620.000000	0.000238419	620.000000	0.000240962	620.000000	4.86396e-08	
+640.000000	0.000207493	640.000000	0.000238269	640.000000	0.000235931	640.000000	0.000235712	640.000000	0.000238222	640.000000	4.72192e-08	
+660.000000	0.000205185	660.000000	0.00023571	660.000000	0.0002334	660.000000	0.000233184	660.000000	0.000235664	660.000000	4.58819e-08	
+680.000000	0.000203024	680.000000	0.000233318	680.000000	0.000231032	680.000000	0.000230821	680.000000	0.000233273	680.000000	4.46206e-08	
+700.000000	0.000201	700.000000	0.000231078	700.000000	0.000228821	700.000000	0.000228608	700.000000	0.000231035	700.000000	4.34288e-08	
+720.000000	0.000199101	720.000000	0.000228979	720.000000	0.000226755	720.000000	0.000226533	720.000000	0.000228937	720.000000	4.2301e-08	
+740.000000	0.000197317	740.000000	0.00022701	740.000000	0.000224814	740.000000	0.000224584	740.000000	0.000226969	740.000000	4.12321e-08	
+760.000000	0.00019564	760.000000	0.00022516	760.000000	0.000222981	760.000000	0.000222752	760.000000	0.00022512	760.000000	4.02175e-08	
+780.000000	0.000194063	780.000000	0.00022342	780.000000	0.000221252	780.000000	0.000221028	780.000000	0.000223381	780.000000	3.92531e-08	
+800.000000	0.000192577	800.000000	0.000221783	800.000000	0.000219624	800.000000	0.000219403	800.000000	0.000221744	800.000000	3.83353e-08	
+820.000000	0.000191177	820.000000	0.00022024	820.000000	0.000218089	820.000000	0.000217869	820.000000	0.000220203	820.000000	3.74608e-08	
+840.000000	0.000189857	840.000000	0.000218786	840.000000	0.000216639	840.000000	0.000216421	840.000000	0.00021875	840.000000	3.66264e-08	
+860.000000	0.000188612	860.000000	0.000217415	860.000000	0.000215269	860.000000	0.000215053	860.000000	0.000217379	860.000000	3.58296e-08	
+880.000000	0.000187437	880.000000	0.00021612	880.000000	0.000213972	880.000000	0.000213758	880.000000	0.000216085	880.000000	3.50677e-08	
+900.000000	0.000186327	900.000000	0.000214897	900.000000	0.000212745	900.000000	0.000212532	900.000000	0.000214863	900.000000	3.43386e-08	
+920.000000	0.000185278	920.000000	0.000213742	920.000000	0.000211581	920.000000	0.00021137	920.000000	0.000213708	920.000000	3.364e-08	
+940.000000	0.000184288	940.000000	0.00021265	940.000000	0.000210478	940.000000	0.000210268	940.000000	0.000212617	940.000000	3.29702e-08	
+960.000000	0.000183351	960.000000	0.000211616	960.000000	0.000209431	960.000000	0.000209222	960.000000	0.000211584	960.000000	3.23274e-08	
+980.000000	0.000182466	980.000000	0.000210639	980.000000	0.000208436	980.000000	0.000208229	980.000000	0.000210607	980.000000	3.17099e-08	
+1000.000000	0.000181629	1000.000000	0.000209714	1000.000000	0.000207491	1000.000000	0.000207286	1000.000000	0.000209683	1000.000000	3.11162e-08	
+1020.000000	0.000180838	1020.000000	0.000208839	1020.000000	0.000206593	1020.000000	0.000206388	1020.000000	0.000208808	1020.000000	3.05451e-08	
+1040.000000	0.000180091	1040.000000	0.00020801	1040.000000	0.000205738	1040.000000	0.000205535	1040.000000	0.00020798	1040.000000	2.99952e-08	
+1060.000000	0.000179384	1060.000000	0.000207225	1060.000000	0.000204924	1060.000000	0.000204722	1060.000000	0.000207195	1060.000000	2.94653e-08	
+1080.000000	0.000178715	1080.000000	0.000206481	1080.000000	0.000204149	1080.000000	0.000203948	1080.000000	0.000206452	1080.000000	2.89544e-08	
+1100.000000	0.000178084	1100.000000	0.000205778	1100.000000	0.00020341	1100.000000	0.000203211	1100.000000	0.000205749	1100.000000	2.84614e-08	
+1120.000000	0.000177487	1120.000000	0.000205111	1120.000000	0.000202706	1120.000000	0.000202508	1120.000000	0.000205083	1120.000000	2.79855e-08	
+1140.000000	0.000176924	1140.000000	0.00020448	1140.000000	0.000202035	1140.000000	0.000201837	1140.000000	0.000204452	1140.000000	2.75257e-08	
+1160.000000	0.000176392	1160.000000	0.000203882	1160.000000	0.000201395	1160.000000	0.000201197	1160.000000	0.000203855	1160.000000	2.70812e-08	
+1180.000000	0.000175891	1180.000000	0.000203317	1180.000000	0.000200783	1180.000000	0.000200587	1180.000000	0.00020329	1180.000000	2.66513e-08	
+1200.000000	0.000175418	1200.000000	0.000202782	1200.000000	0.000200199	1200.000000	0.000200003	1200.000000	0.000202755	1200.000000	2.62352e-08	
+1220.000000	0.000174972	1220.000000	0.000202275	1220.000000	0.00019964	1220.000000	0.000199447	1220.000000	0.00020225	1220.000000	2.58323e-08	
+1240.000000	0.000174553	1240.000000	0.000201797	1240.000000	0.000199106	1240.000000	0.000198914	1240.000000	0.000201771	1240.000000	2.5442e-08	
+1260.000000	0.000174158	1260.000000	0.000201344	1260.000000	0.000198596	1260.000000	0.000198406	1260.000000	0.000201319	1260.000000	2.50637e-08	
+1280.000000	0.000173788	1280.000000	0.000200917	1280.000000	0.000198109	1280.000000	0.00019792	1280.000000	0.000200892	1280.000000	2.46967e-08	
+1300.000000	0.00017344	1300.000000	0.000200513	1300.000000	0.000197645	1300.000000	0.000197455	1300.000000	0.000200489	1300.000000	2.43407e-08	
+1320.000000	0.000173114	1320.000000	0.000200133	1320.000000	0.000197201	1320.000000	0.00019701	1320.000000	0.000200109	1320.000000	2.39952e-08	
+1340.000000	0.00017281	1340.000000	0.000199774	1340.000000	0.000196778	1340.000000	0.000196585	1340.000000	0.00019975	1340.000000	2.36595e-08	
+1360.000000	0.000172525	1360.000000	0.000199436	1360.000000	0.000196373	1360.000000	0.000196178	1360.000000	0.000199412	1360.000000	2.33335e-08	
+1380.000000	0.00017226	1380.000000	0.000199118	1380.000000	0.000195986	1380.000000	0.000195788	1380.000000	0.000199095	1380.000000	2.30166e-08	
+1400.000000	0.000172013	1400.000000	0.000198819	1400.000000	0.000195616	1400.000000	0.000195415	1400.000000	0.000198796	1400.000000	2.27084e-08	
+1420.000000	0.000171784	1420.000000	0.000198538	1420.000000	0.000195261	1420.000000	0.000195058	1420.000000	0.000198516	1420.000000	2.24086e-08	
+1440.000000	0.000171572	1440.000000	0.000198275	1440.000000	0.000194921	1440.000000	0.000194716	1440.000000	0.000198253	1440.000000	2.21169e-08	
+1460.000000	0.000171376	1460.000000	0.000198029	1460.000000	0.000194595	1460.000000	0.000194389	1460.000000	0.000198007	1460.000000	2.18329e-08	
+1480.000000	0.000171197	1480.000000	0.000197799	1480.000000	0.000194281	1480.000000	0.000194076	1480.000000	0.000197778	1480.000000	2.15563e-08	
+1500.000000	0.000171033	1500.000000	0.000197585	1500.000000	0.000193981	1500.000000	0.000193776	1500.000000	0.000197564	1500.000000	2.12868e-08	
+1520.000000	0.000170883	1520.000000	0.000197386	1520.000000	0.000193693	1520.000000	0.000193488	1520.000000	0.000197365	1520.000000	2.10242e-08	
+1540.000000	0.000170748	1540.000000	0.000197201	1540.000000	0.000193417	1540.000000	0.000193213	1540.000000	0.00019718	1540.000000	2.07682e-08	
+1560.000000	0.000170626	1560.000000	0.00019703	1560.000000	0.000193152	1560.000000	0.000192949	1560.000000	0.000197009	1560.000000	2.05186e-08	
+1580.000000	0.000170518	1580.000000	0.000196872	1580.000000	0.000192898	1580.000000	0.000192697	1580.000000	0.000196852	1580.000000	2.0275e-08	
+1600.000000	0.000170422	1600.000000	0.000196727	1600.000000	0.000192655	1600.000000	0.000192455	1600.000000	0.000196707	1600.000000	2.00374e-08	
+1620.000000	0.000170338	1620.000000	0.000196594	1620.000000	0.000192423	1620.000000	0.000192223	1620.000000	0.000196575	1620.000000	1.98054e-08	
+1640.000000	0.000170267	1640.000000	0.000196474	1640.000000	0.0001922	1640.000000	0.000192001	1640.000000	0.000196454	1640.000000	1.95789e-08	
+1660.000000	0.000170207	1660.000000	0.000196365	1660.000000	0.000191987	1660.000000	0.000191789	1660.000000	0.000196345	1660.000000	1.93577e-08	
+1680.000000	0.000170158	1680.000000	0.000196266	1680.000000	0.000191784	1680.000000	0.000191585	1680.000000	0.000196247	1680.000000	1.91415e-08	
+1700.000000	0.00017012	1700.000000	0.000196179	1700.000000	0.000191588	1700.000000	0.00019139	1700.000000	0.00019616	1700.000000	1.89303e-08	
+1750.000000	0.00017007	1750.000000	0.000196005	1750.000000	0.000191136	1750.000000	0.000190939	1750.000000	0.000195986	1750.000000	1.84227e-08	
+1800.000000	0.00017008	1800.000000	0.00019589	1800.000000	0.000190732	1800.000000	0.000190535	1800.000000	0.000195872	1800.000000	1.79424e-08	
+1850.000000	0.000170146	1850.000000	0.000195829	1850.000000	0.00019037	1850.000000	0.000190174	1850.000000	0.000195812	1850.000000	1.74872e-08	
+1900.000000	0.000170264	1900.000000	0.000195819	1900.000000	0.000190047	1900.000000	0.000189852	1900.000000	0.000195802	1900.000000	1.70552e-08	
+1950.000000	0.000170431	1950.000000	0.000195855	1950.000000	0.000189759	1950.000000	0.000189565	1950.000000	0.000195839	1950.000000	1.66446e-08	
+2000.000000	0.000170642	2000.000000	0.000195934	2000.000000	0.000189504	2000.000000	0.000189311	2000.000000	0.000195918	2000.000000	1.62539e-08	
+2100.000000	0.000171189	2100.000000	0.000196208	2100.000000	0.00018908	2100.000000	0.000188889	2100.000000	0.000196193	2100.000000	1.55265e-08	
+2200.000000	0.000171883	2200.000000	0.00019662	2200.000000	0.000188756	2200.000000	0.000188565	2200.000000	0.000196606	2200.000000	1.48632e-08	
+2300.000000	0.000172709	2300.000000	0.000197152	2300.000000	0.000188515	2300.000000	0.000188326	2300.000000	0.000197138	2300.000000	1.42558e-08	
+2400.000000	0.000173651	2400.000000	0.000197788	2400.000000	0.000188346	2400.000000	0.000188158	2400.000000	0.000197775	2400.000000	1.36974e-08	
+2500.000000	0.000174699	2500.000000	0.000198517	2500.000000	0.000188237	2500.000000	0.00018805	2500.000000	0.000198504	2500.000000	1.31823e-08	
+2600.000000	0.00017584	2600.000000	0.000199327	2600.000000	0.00018818	2600.000000	0.000187994	2600.000000	0.000199314	2600.000000	1.27056e-08	
+2700.000000	0.000177067	2700.000000	0.000200209	2700.000000	0.000188167	2700.000000	0.000187981	2700.000000	0.000200197	2700.000000	1.22631e-08	
+2800.000000	0.000178372	2800.000000	0.000201155	2800.000000	0.000188192	2800.000000	0.000188007	2800.000000	0.000201143	2800.000000	1.18512e-08	
+2900.000000	0.000179749	2900.000000	0.000202159	2900.000000	0.00018825	2900.000000	0.000188065	2900.000000	0.000202148	2900.000000	1.14668e-08	
+3000.000000	0.00018119	3000.000000	0.000203215	3000.000000	0.000188335	3000.000000	0.000188151	3000.000000	0.000203204	3000.000000	1.11073e-08	
diff --git a/Inputs/EnergyLoss/helium3_cd2.txt b/Inputs/EnergyLoss/helium3_cd2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..9e1c2717c33db0cd9b0bd3889caf2648705c3cdb
--- /dev/null
+++ b/Inputs/EnergyLoss/helium3_cd2.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0276173	0.001000	0.0344409	0.001000	0.0427462	0.001000	0.0427462	0.001000	0.0228283	0.001000	0.0116127	
+0.002000	0.0360505	0.002000	0.0449758	0.002000	0.0550192	0.002000	0.0550192	0.002000	0.0368591	0.002000	0.00811677	
+0.005000	0.056437	0.005000	0.0704831	0.005000	0.0810943	0.005000	0.0810943	0.005000	0.0658823	0.005000	0.00460078	
+0.008000	0.0715815	0.008000	0.0894315	0.008000	0.0987086	0.008000	0.0987086	0.008000	0.0860954	0.008000	0.00333605	
+0.010000	0.0798773	0.010000	0.099833	0.010000	0.107913	0.010000	0.107913	0.010000	0.0969868	0.010000	0.00284626	
+0.015000	0.101992	0.015000	0.122067	0.015000	0.125953	0.015000	0.125953	0.015000	0.119966	0.015000	0.00210113	
+0.020000	0.120478	0.020000	0.140182	0.020000	0.139945	0.020000	0.139945	0.020000	0.13849	0.020000	0.00169136	
+0.025000	0.136235	0.025000	0.155625	0.025000	0.151688	0.025000	0.151688	0.025000	0.1542 	0.025000	0.00142476	
+0.030000	0.149741	0.030000	0.169146	0.030000	0.162871	0.030000	0.162871	0.030000	0.16791	0.030000	0.0012361	
+0.035000	0.161283	0.035000	0.181171	0.035000	0.172699	0.035000	0.172699	0.035000	0.180077	0.035000	0.00109489	
+0.040000	0.171061	0.040000	0.191961	0.040000	0.181452	0.040000	0.181452	0.040000	0.190977	0.040000	0.000984833	
+0.045000	0.179232	0.045000	0.201684	0.045000	0.189313	0.045000	0.189313	0.045000	0.200787	0.045000	0.000896426	
+0.050000	0.18594	0.050000	0.210452	0.050000	0.19641	0.050000	0.19641	0.050000	0.209628	0.050000	0.000823705	
+0.055000	0.191322	0.055000	0.218349	0.055000	0.202832	0.055000	0.202832	0.055000	0.217586	0.055000	0.000762738	
+0.060000	0.195516	0.060000	0.225438	0.060000	0.20865	0.060000	0.20865	0.060000	0.224727	0.060000	0.000710822	
+0.070000	0.200881	0.070000	0.237387	0.070000	0.218673	0.070000	0.218673	0.070000	0.236761	0.070000	0.00062696	
+0.080000	0.203075	0.080000	0.246652	0.080000	0.226807	0.080000	0.226807	0.080000	0.24609	0.080000	0.000561994	
+0.090000	0.203024	0.090000	0.253547	0.090000	0.233295	0.090000	0.233295	0.090000	0.253037	0.090000	0.000510059	
+0.100000	0.201481	0.100000	0.258376	0.100000	0.238335	0.100000	0.238335	0.100000	0.257908	0.100000	0.000467514	
+0.120000	0.196065	0.120000	0.263008	0.120000	0.244762	0.120000	0.244762	0.120000	0.262607	0.120000	0.000401796	
+0.140000	0.189668	0.140000	0.262702	0.140000	0.247299	0.140000	0.247299	0.140000	0.262349	0.140000	0.000353239	
+0.160000	0.183499	0.160000	0.259191	0.160000	0.246946	0.160000	0.246946	0.160000	0.258875	0.160000	0.000315786	
+0.180000	0.177939	0.180000	0.253743	0.180000	0.244514	0.180000	0.244514	0.180000	0.253457	0.180000	0.000285953	
+0.200000	0.173018	0.200000	0.247229	0.200000	0.240642	0.200000	0.240642	0.200000	0.246968	0.200000	0.000261588	
+0.250000	0.162858	0.250000	0.229515	0.250000	0.227566	0.250000	0.227566	0.250000	0.229299	0.250000	0.000216438	
+0.300000	0.154561	0.300000	0.21255	0.300000	0.212951	0.300000	0.212951	0.300000	0.212365	0.300000	0.000185245	
+0.350000	0.147246	0.350000	0.197454	0.350000	0.198835	0.350000	0.198835	0.350000	0.197291	0.350000	0.000162319	
+0.400000	0.140546	0.400000	0.18429	0.400000	0.185949	0.400000	0.185949	0.400000	0.184145	0.400000	0.00014471	
+0.450000	0.134324	0.450000	0.172836	0.450000	0.17445	0.450000	0.17445	0.450000	0.172706	0.450000	0.000130733	
+0.500000	0.128528	0.500000	0.162825	0.500000	0.164269	0.500000	0.164269	0.500000	0.162706	0.500000	0.000119351	
+0.600000	0.118111	0.600000	0.146211	0.600000	0.147266	0.600000	0.147266	0.600000	0.146109	0.600000	0.0001019	
+0.700000	0.109118	0.700000	0.132989	0.700000	0.133755	0.700000	0.133755	0.700000	0.1329 	0.700000	8.9111e-05	
+0.800000	0.101354	0.800000	0.122201	0.800000	0.122795	0.800000	0.122795	0.800000	0.122121	0.800000	7.93125e-05	
+0.900000	0.0946234	0.900000	0.11321	0.900000	0.11372	0.900000	0.11372	0.900000	0.113139	0.900000	7.1551e-05	
+1.000000	0.0887527	1.000000	0.105586	1.000000	0.106069	1.000000	0.106069	1.000000	0.105521	1.000000	6.52419e-05	
+1.250000	0.076939	1.250000	0.0907067	1.250000	0.0912458	1.250000	0.0912458	1.250000	0.090653	1.250000	5.36271e-05	
+1.500000	0.0680187	1.500000	0.0797702	1.500000	0.0804217	1.500000	0.0804217	1.500000	0.0797245	1.500000	4.56653e-05	
+1.750000	0.0610323	1.750000	0.0713307	1.750000	0.0720932	1.750000	0.0720932	1.750000	0.0712908	1.750000	3.9849e-05	
+2.000000	0.0554016	2.000000	0.0645897	2.000000	0.0654463	2.000000	0.0654463	2.000000	0.0645543	2.000000	3.54041e-05	
+2.250000	0.0507608	2.250000	0.0590661	2.250000	0.0599981	2.250000	0.0599981	2.250000	0.0590342	2.250000	3.18907e-05	
+2.500000	0.0460818	2.500000	0.0544501	2.500000	0.0554406	2.500000	0.0554406	2.500000	0.0544211	2.500000	2.904e-05	
+3.000000	0.0402224	3.000000	0.0471605	3.000000	0.0482291	3.000000	0.0482291	3.000000	0.0471358	3.000000	2.4688e-05	
+3.500000	0.0357808	3.500000	0.0416566	3.500000	0.0427673	3.500000	0.0427673	3.500000	0.0416351	3.500000	2.15149e-05	
+4.000000	0.0322876	4.000000	0.0373499	4.000000	0.03848	4.000000	0.03848	4.000000	0.0373308	4.000000	1.90936e-05	
+4.500000	0.0294622	4.500000	0.0338857	4.500000	0.0350212	4.500000	0.0350212	4.500000	0.0338685	4.500000	1.71823e-05	
+5.000000	0.027126	5.000000	0.0310371	5.000000	0.0321689	5.000000	0.0321689	5.000000	0.0310215	5.000000	1.56332e-05	
+5.500000	0.0251594	5.500000	0.028652	5.500000	0.0297743	5.500000	0.0297743	5.500000	0.0286376	5.500000	1.43512e-05	
+6.000000	0.0234794	6.000000	0.0266245	6.000000	0.0277338	6.000000	0.0277338	6.000000	0.0266112	6.000000	1.32717e-05	
+6.500000	0.0220264	6.500000	0.0248788	6.500000	0.0259728	6.500000	0.0259728	6.500000	0.0248664	6.500000	1.23497e-05	
+7.000000	0.0207564	7.000000	0.0233591	7.000000	0.0244366	7.000000	0.0244366	7.000000	0.0233476	7.000000	1.15526e-05	
+7.500000	0.0196361	7.500000	0.0220236	7.500000	0.0230837	7.500000	0.0230837	7.500000	0.0220127	7.500000	1.08563e-05	
+8.000000	0.01864	8.000000	0.0208401	8.000000	0.0218826	8.000000	0.0218826	8.000000	0.0208298	8.000000	1.02426e-05	
+8.500000	0.0177482	8.500000	0.0197836	8.500000	0.0208084	8.500000	0.0208084	8.500000	0.0197739	8.500000	9.69734e-06	
+9.000000	0.0169447	9.000000	0.0188343	9.000000	0.0198416	9.000000	0.0198416	9.000000	0.0188251	9.000000	9.2096e-06	
+9.500000	0.0162169	9.500000	0.0179765	9.500000	0.0189665	9.500000	0.0189665	9.500000	0.0179677	9.500000	8.77058e-06	
+10.000000	0.0155542	10.000000	0.0178042	10.000000	0.0181703	10.000000	0.0181703	10.000000	0.0177958	10.000000	8.37324e-06	
+11.000000	0.0143917	11.000000	0.0164934	11.000000	0.0167575	11.000000	0.0167584	11.000000	0.0164857	11.000000	7.68162e-06	
+12.000000	0.0134045	12.000000	0.0153756	12.000000	0.0155616	12.000000	0.0155631	12.000000	0.0153685	12.000000	7.09971e-06	
+13.000000	0.012555	13.000000	0.0144105	13.000000	0.0145361	13.000000	0.0145378	13.000000	0.0144039	13.000000	6.60302e-06	
+14.000000	0.0118158	14.000000	0.0135683	14.000000	0.0136468	14.000000	0.0136485	14.000000	0.0135621	14.000000	6.17389e-06	
+15.000000	0.0111664	15.000000	0.0128266	15.000000	0.012868	15.000000	0.0128696	15.000000	0.0128208	15.000000	5.79923e-06	
+16.000000	0.010591	16.000000	0.0121682	16.000000	0.0121804	16.000000	0.0121819	16.000000	0.0121627	16.000000	5.46917e-06	
+17.000000	0.0100775	17.000000	0.0115796	17.000000	0.011569	17.000000	0.0115704	17.000000	0.0115744	17.000000	5.17609e-06	
+18.000000	0.00961626	18.000000	0.01105	18.000000	0.011022	18.000000	0.011023	18.000000	0.0110451	18.000000	4.91403e-06	
+19.000000	0.00919949	19.000000	0.0105709	19.000000	0.0105296	19.000000	0.0105303	19.000000	0.0105662	19.000000	4.67825e-06	
+20.000000	0.00882096	20.000000	0.0101353	20.000000	0.0100839	20.000000	0.0100847	20.000000	0.0101308	20.000000	4.46493e-06	
+21.000000	0.00847555	21.000000	0.00973739	21.000000	0.00967897	21.000000	0.00967979	21.000000	0.00973312	21.000000	4.27097e-06	
+22.000000	0.008159	22.000000	0.00937246	22.000000	0.00930978	22.000000	0.00931039	22.000000	0.00936836	22.000000	4.09382e-06	
+23.000000	0.00786779	23.000000	0.00903648	23.000000	0.00897199	23.000000	0.00897217	23.000000	0.00903255	23.000000	3.93135e-06	
+24.000000	0.00759893	24.000000	0.0087261	24.000000	0.0086617	24.000000	0.00866145	24.000000	0.00872232	24.000000	3.78178e-06	
+25.000000	0.0073499	25.000000	0.00843846	25.000000	0.00837578	25.000000	0.00837514	25.000000	0.00843482	25.000000	3.64362e-06	
+27.000000	0.00690298	27.000000	0.00792192	27.000000	0.00786715	27.000000	0.00786553	27.000000	0.00791853	27.000000	3.39661e-06	
+29.000000	0.00651316	29.000000	0.00747107	29.000000	0.00742829	29.000000	0.00742627	29.000000	0.00746788	29.000000	3.18215e-06	
+31.000000	0.00616995	31.000000	0.00707395	31.000000	0.00704007	31.000000	0.00703795	31.000000	0.00707095	31.000000	2.99413e-06	
+33.000000	0.00586532	33.000000	0.00672137	33.000000	0.00669095	33.000000	0.00668817	33.000000	0.00671854	33.000000	2.82788e-06	
+35.000000	0.00559301	35.000000	0.00640615	35.000000	0.00637805	35.000000	0.00637542	35.000000	0.00640347	35.000000	2.67979e-06	
+38.000000	0.00523451	38.000000	0.00599115	38.000000	0.00596663	38.000000	0.00596357	38.000000	0.00598867	38.000000	2.4856e-06	
+41.000000	0.00492485	41.000000	0.00563275	41.000000	0.00561089	41.000000	0.00560776	41.000000	0.00563043	41.000000	2.31861e-06	
+44.000000	0.0046545	44.000000	0.00531996	44.000000	0.00529987	44.000000	0.0052971	44.000000	0.00531779	44.000000	2.17341e-06	
+47.000000	0.0044163	47.000000	0.0050445	47.000000	0.00502654	47.000000	0.0050234	47.000000	0.00504245	47.000000	2.04595e-06	
+50.000000	0.00420473	50.000000	0.00479997	50.000000	0.00478349	50.000000	0.00478032	50.000000	0.00479804	50.000000	1.93314e-06	
+55.000000	0.00389998	55.000000	0.00444808	55.000000	0.00443376	55.000000	0.0044303	55.000000	0.00444631	55.000000	1.77131e-06	
+60.000000	0.00364267	60.000000	0.00415136	60.000000	0.00413813	60.000000	0.00413495	60.000000	0.00414973	60.000000	1.63535e-06	
+65.000000	0.00342233	65.000000	0.00389765	65.000000	0.00388549	65.000000	0.00388222	65.000000	0.00389614	65.000000	1.51944e-06	
+70.000000	0.00323138	70.000000	0.00367814	70.000000	0.00366673	70.000000	0.00366342	70.000000	0.00367672	70.000000	1.41941e-06	
+75.000000	0.00306419	75.000000	0.00348626	75.000000	0.0034751	75.000000	0.00347205	75.000000	0.00348493	75.000000	1.33217e-06	
+80.000000	0.0029165	80.000000	0.00331707	80.000000	0.00330652	80.000000	0.0033032	80.000000	0.00331581	80.000000	1.25539e-06	
+85.000000	0.00278502	85.000000	0.00316671	85.000000	0.00315623	85.000000	0.00315309	85.000000	0.00316553	85.000000	1.18727e-06	
+90.000000	0.00266716	90.000000	0.00303219	90.000000	0.00302172	90.000000	0.00301871	90.000000	0.00303106	90.000000	1.12641e-06	
+95.000000	0.00256086	95.000000	0.00291109	95.000000	0.00290093	95.000000	0.00289771	95.000000	0.00291002	95.000000	1.0717e-06	
+100.000000	0.00246446	100.000000	0.00280149	100.000000	0.00279123	100.000000	0.00278815	100.000000	0.00280047	100.000000	1.02223e-06	
+105.000000	0.00237661	105.000000	0.0027018	105.000000	0.00269143	105.000000	0.00268848	105.000000	0.00270083	105.000000	9.77283e-07	
+110.000000	0.0022962	110.000000	0.00261074	110.000000	0.00260021	110.000000	0.0025974	110.000000	0.0026098	110.000000	9.36257e-07	
+115.000000	0.00222229	115.000000	0.00252721	115.000000	0.00251675	115.000000	0.00251384	115.000000	0.00252631	115.000000	8.98655e-07	
+120.000000	0.00215411	120.000000	0.00245031	120.000000	0.00243986	120.000000	0.00243689	120.000000	0.00244945	120.000000	8.64059e-07	
+125.000000	0.00209101	125.000000	0.00237928	125.000000	0.00236863	125.000000	0.00236581	125.000000	0.00237844	125.000000	8.32119e-07	
+130.000000	0.00203241	130.000000	0.00231346	130.000000	0.00230267	130.000000	0.00229994	130.000000	0.00231266	130.000000	8.02537e-07	
+135.000000	0.00197785	135.000000	0.00225229	135.000000	0.00224157	135.000000	0.00223872	135.000000	0.00225152	135.000000	7.75058e-07	
+140.000000	0.00192691	140.000000	0.00219531	140.000000	0.00218454	140.000000	0.00218167	140.000000	0.00219456	140.000000	7.49464e-07	
+145.000000	0.00187923	145.000000	0.00214208	145.000000	0.00213115	145.000000	0.00212839	145.000000	0.00214135	145.000000	7.25564e-07	
+150.000000	0.00183449	150.000000	0.00209225	150.000000	0.0020812	150.000000	0.00207851	150.000000	0.00209154	150.000000	7.03193e-07	
+155.000000	0.00177151	155.000000	0.0020455	155.000000	0.00203431	155.000000	0.00203171	155.000000	0.00204481	155.000000	6.82208e-07	
+160.000000	0.0017346	160.000000	0.00200155	160.000000	0.00199029	160.000000	0.00198772	160.000000	0.00200088	160.000000	6.62483e-07	
+165.000000	0.00169978	165.000000	0.00196015	165.000000	0.00194896	165.000000	0.00194629	165.000000	0.00195951	165.000000	6.43905e-07	
+170.000000	0.0016669	170.000000	0.0019211	170.000000	0.00190988	170.000000	0.0019072	170.000000	0.00192047	170.000000	6.26377e-07	
+175.000000	0.00163578	175.000000	0.00188419	175.000000	0.00187286	175.000000	0.00187026	175.000000	0.00188358	175.000000	6.09811e-07	
+180.000000	0.00160629	180.000000	0.00184926	180.000000	0.00183785	180.000000	0.00183531	180.000000	0.00184866	180.000000	5.94128e-07	
+185.000000	0.00157831	185.000000	0.00181614	185.000000	0.00180466	185.000000	0.00180217	185.000000	0.00181556	185.000000	5.7926e-07	
+190.000000	0.00155171	190.000000	0.0017847	190.000000	0.00177315	190.000000	0.00177072	190.000000	0.00178414	190.000000	5.65143e-07	
+195.000000	0.0015264	195.000000	0.00175482	195.000000	0.00174327	195.000000	0.00174084	195.000000	0.00175427	195.000000	5.51722e-07	
+200.000000	0.00150228	200.000000	0.00172638	200.000000	0.0017149	200.000000	0.00171239	200.000000	0.00172584	200.000000	5.38946e-07	
+210.000000	0.0014573	210.000000	0.00167343	210.000000	0.00166192	210.000000	0.00165946	210.000000	0.00167291	210.000000	5.15147e-07	
+220.000000	0.00141619	220.000000	0.00162514	220.000000	0.00161358	220.000000	0.0016112	220.000000	0.00162465	220.000000	4.9343e-07	
+230.000000	0.00137847	230.000000	0.00158093	230.000000	0.00156932	230.000000	0.00156704	230.000000	0.00158046	230.000000	4.73528e-07	
+240.000000	0.00134373	240.000000	0.0015403	240.000000	0.00152881	240.000000	0.00152647	240.000000	0.00153984	240.000000	4.55222e-07	
+250.000000	0.00131164	250.000000	0.00150283	250.000000	0.00149143	250.000000	0.00148908	250.000000	0.0015024	250.000000	4.38324e-07	
+260.000000	0.00128189	260.000000	0.00146818	260.000000	0.00145679	260.000000	0.00145452	260.000000	0.00146776	260.000000	4.22677e-07	
+270.000000	0.00125424	270.000000	0.00143604	270.000000	0.00142469	270.000000	0.00142248	270.000000	0.00143563	270.000000	4.08145e-07	
+280.000000	0.00122848	280.000000	0.00140615	280.000000	0.00139485	280.000000	0.0013927	280.000000	0.00140575	280.000000	3.94611e-07	
+290.000000	0.00120441	290.000000	0.00137828	290.000000	0.00136717	290.000000	0.00136495	290.000000	0.0013779	290.000000	3.81976e-07	
+300.000000	0.00118189	300.000000	0.00135224	300.000000	0.00134126	300.000000	0.00133903	300.000000	0.00135187	300.000000	3.70151e-07	
+310.000000	0.00116076	310.000000	0.00132785	310.000000	0.00131695	310.000000	0.00131478	310.000000	0.00132749	310.000000	3.5906e-07	
+320.000000	0.00114089	320.000000	0.00130497	320.000000	0.00129417	320.000000	0.00129204	320.000000	0.00130462	320.000000	3.48636e-07	
+330.000000	0.00112219	330.000000	0.00128347	330.000000	0.00127275	330.000000	0.00127068	330.000000	0.00128313	330.000000	3.3882e-07	
+340.000000	0.00110455	340.000000	0.00126322	340.000000	0.00125263	340.000000	0.00125058	340.000000	0.00126289	340.000000	3.2956e-07	
+350.000000	0.00108789	350.000000	0.00124412	350.000000	0.00123373	350.000000	0.00123163	350.000000	0.0012438	350.000000	3.20809e-07	
+360.000000	0.00107213	360.000000	0.00122608	360.000000	0.00121586	360.000000	0.00121375	360.000000	0.00122576	360.000000	3.12526e-07	
+370.000000	0.00105719	370.000000	0.00120901	370.000000	0.0011988	370.000000	0.00119673	370.000000	0.00120871	370.000000	3.04674e-07	
+380.000000	0.00104302	380.000000	0.00119285	380.000000	0.00118265	380.000000	0.00118062	380.000000	0.00119255	380.000000	2.9722e-07	
+390.000000	0.00102957	390.000000	0.00117751	390.000000	0.00116735	390.000000	0.00116534	390.000000	0.00117722	390.000000	2.90133e-07	
+400.000000	0.00101677	400.000000	0.00116295	400.000000	0.00115282	400.000000	0.00115085	400.000000	0.00116267	400.000000	2.83388e-07	
+410.000000	0.00100458	410.000000	0.00114911	410.000000	0.00113902	410.000000	0.00113708	410.000000	0.00114884	410.000000	2.7696e-07	
+420.000000	0.000992971	420.000000	0.00113594	420.000000	0.00112595	420.000000	0.00112397	420.000000	0.00113567	420.000000	2.70827e-07	
+430.000000	0.000981892	430.000000	0.00112339	430.000000	0.00111351	430.000000	0.0011115	430.000000	0.00112312	430.000000	2.64968e-07	
+440.000000	0.000971314	440.000000	0.00111142	440.000000	0.00110161	440.000000	0.00109961	440.000000	0.00111116	440.000000	2.59365e-07	
+450.000000	0.000961203	450.000000	0.00109999	450.000000	0.00109023	450.000000	0.00108826	450.000000	0.00109974	450.000000	2.54003e-07	
+460.000000	0.000951531	460.000000	0.00108908	460.000000	0.00107937	460.000000	0.00107743	460.000000	0.00108883	460.000000	2.48865e-07	
+470.000000	0.000942272	470.000000	0.00107864	470.000000	0.00106899	470.000000	0.00106707	470.000000	0.00107839	470.000000	2.43937e-07	
+480.000000	0.0009334	480.000000	0.00106865	480.000000	0.00105906	480.000000	0.00105717	480.000000	0.00106841	480.000000	2.39207e-07	
+490.000000	0.000924893	490.000000	0.00105908	490.000000	0.00104955	490.000000	0.00104768	490.000000	0.00105885	490.000000	2.34663e-07	
+500.000000	0.000916731	500.000000	0.00104991	500.000000	0.00104045	500.000000	0.0010386	500.000000	0.00104968	500.000000	2.30295e-07	
+520.000000	0.000901364	520.000000	0.00103267	520.000000	0.00102343	520.000000	0.00102153	520.000000	0.00103245	520.000000	2.22043e-07	
+540.000000	0.000887162	540.000000	0.00101677	540.000000	0.0010077	540.000000	0.0010058	540.000000	0.00101656	540.000000	2.1438e-07	
+560.000000	0.000874005	560.000000	0.00100207	560.000000	0.000993122	560.000000	0.00099126	560.000000	0.00100187	560.000000	2.07245e-07	
+580.000000	0.000861792	580.000000	0.000988452	580.000000	0.00097963	580.000000	0.000977797	580.000000	0.000988252	580.000000	2.00585e-07	
+600.000000	0.000850433	600.000000	0.000975804	600.000000	0.000967095	600.000000	0.0009653	600.000000	0.000975609	600.000000	1.94352e-07	
+620.000000	0.000839849	620.000000	0.000964036	620.000000	0.000955451	620.000000	0.000953677	620.000000	0.000963848	620.000000	1.88508e-07	
+640.000000	0.000829971	640.000000	0.00095307	640.000000	0.00094465	640.000000	0.000942846	640.000000	0.000952887	640.000000	1.83015e-07	
+660.000000	0.000820738	660.000000	0.000942834	660.000000	0.000934564	660.000000	0.000932736	660.000000	0.000942656	660.000000	1.77844e-07	
+680.000000	0.000812098	680.000000	0.000933265	680.000000	0.000925092	680.000000	0.000923284	680.000000	0.000933092	680.000000	1.72965e-07	
+700.000000	0.000804	700.000000	0.000924308	700.000000	0.00091621	700.000000	0.000914432	700.000000	0.00092414	700.000000	1.68356e-07	
+720.000000	0.000796403	720.000000	0.000915913	720.000000	0.00090789	720.000000	0.000906132	720.000000	0.000915749	720.000000	1.63994e-07	
+740.000000	0.000789268	740.000000	0.000908035	740.000000	0.000900076	740.000000	0.000898337	740.000000	0.000907875	740.000000	1.59859e-07	
+760.000000	0.000782561	760.000000	0.000900634	760.000000	0.000892722	760.000000	0.000891009	760.000000	0.000900478	760.000000	1.55934e-07	
+780.000000	0.00077625	780.000000	0.000893675	780.000000	0.000885809	780.000000	0.00088411	780.000000	0.000893523	780.000000	1.52203e-07	
+800.000000	0.000770308	800.000000	0.000887126	800.000000	0.00087932	800.000000	0.000877609	800.000000	0.000886977	800.000000	1.48652e-07	
+820.000000	0.000764708	820.000000	0.000880957	820.000000	0.000873211	820.000000	0.000871476	820.000000	0.000880811	820.000000	1.45268e-07	
+840.000000	0.000759429	840.000000	0.000875141	840.000000	0.000867432	840.000000	0.000865684	840.000000	0.000874999	840.000000	1.4204e-07	
+860.000000	0.000754448	860.000000	0.000869655	860.000000	0.000861949	860.000000	0.00086021	860.000000	0.000869516	860.000000	1.38956e-07	
+880.000000	0.000749746	880.000000	0.000864476	880.000000	0.000856751	880.000000	0.00085503	880.000000	0.00086434	880.000000	1.36008e-07	
+900.000000	0.000745307	900.000000	0.000859585	900.000000	0.000851827	900.000000	0.000850126	900.000000	0.000859452	900.000000	1.33186e-07	
+920.000000	0.000741113	920.000000	0.000854964	920.000000	0.000847166	920.000000	0.000845479	920.000000	0.000854833	920.000000	1.30482e-07	
+940.000000	0.00073715	940.000000	0.000850594	940.000000	0.000842747	940.000000	0.000841071	940.000000	0.000850467	940.000000	1.2789e-07	
+960.000000	0.000733405	960.000000	0.000846462	960.000000	0.000838555	960.000000	0.000836889	960.000000	0.000846337	960.000000	1.25402e-07	
+980.000000	0.000729865	980.000000	0.000842553	980.000000	0.000834574	980.000000	0.000832916	980.000000	0.000842429	980.000000	1.23011e-07	
+1000.000000	0.000726518	1000.000000	0.000838853	1000.000000	0.000830789	1000.000000	0.000829142	1000.000000	0.000838732	1000.000000	1.20713e-07	
+1020.000000	0.000723354	1020.000000	0.00083535	1020.000000	0.000827189	1020.000000	0.000825552	1020.000000	0.000835232	1020.000000	1.18502e-07	
+1040.000000	0.000720362	1040.000000	0.000832035	1040.000000	0.00082376	1040.000000	0.000822138	1040.000000	0.000831918	1040.000000	1.16373e-07	
+1060.000000	0.000717534	1060.000000	0.000828895	1060.000000	0.000820496	1060.000000	0.000818887	1060.000000	0.000828781	1060.000000	1.14322e-07	
+1080.000000	0.000714861	1080.000000	0.000825922	1080.000000	0.000817389	1080.000000	0.000815791	1080.000000	0.00082581	1080.000000	1.12344e-07	
+1100.000000	0.000712336	1100.000000	0.000823107	1100.000000	0.000814434	1100.000000	0.000812841	1100.000000	0.000822996	1100.000000	1.10435e-07	
+1120.000000	0.000709949	1120.000000	0.000820441	1120.000000	0.000811624	1120.000000	0.000810029	1120.000000	0.000820332	1120.000000	1.08592e-07	
+1140.000000	0.000707696	1140.000000	0.000817916	1140.000000	0.000808952	1140.000000	0.000807346	1140.000000	0.00081781	1140.000000	1.06812e-07	
+1160.000000	0.000705569	1160.000000	0.000815526	1160.000000	0.000806405	1160.000000	0.000804787	1160.000000	0.000815421	1160.000000	1.05091e-07	
+1180.000000	0.000703563	1180.000000	0.000813264	1180.000000	0.000803973	1180.000000	0.000802345	1180.000000	0.000813161	1180.000000	1.03426e-07	
+1200.000000	0.000701671	1200.000000	0.000811124	1200.000000	0.000801648	1200.000000	0.000800012	1200.000000	0.000811022	1200.000000	1.01815e-07	
+1220.000000	0.000699889	1220.000000	0.000809099	1220.000000	0.000799421	1220.000000	0.000797785	1220.000000	0.000808998	1220.000000	1.00254e-07	
+1240.000000	0.000698212	1240.000000	0.000807184	1240.000000	0.000797288	1240.000000	0.000795656	1240.000000	0.000807085	1240.000000	9.87426e-08	
+1260.000000	0.000696634	1260.000000	0.000805374	1260.000000	0.000795247	1260.000000	0.000793622	1260.000000	0.000805277	1260.000000	9.72773e-08	
+1280.000000	0.000695152	1280.000000	0.000803664	1280.000000	0.000793293	1280.000000	0.000791677	1280.000000	0.000803568	1280.000000	9.58561e-08	
+1300.000000	0.000693761	1300.000000	0.00080205	1300.000000	0.000791424	1300.000000	0.000789818	1300.000000	0.000801956	1300.000000	9.44772e-08	
+1320.000000	0.000692458	1320.000000	0.000800527	1320.000000	0.000789638	1320.000000	0.000788039	1320.000000	0.000800434	1320.000000	9.31386e-08	
+1340.000000	0.000691239	1340.000000	0.000799092	1340.000000	0.00078793	1340.000000	0.000786337	1340.000000	0.000799	1340.000000	9.18386e-08	
+1360.000000	0.0006901	1360.000000	0.00079774	1360.000000	0.000786296	1360.000000	0.000784709	1360.000000	0.000797649	1360.000000	9.05755e-08	
+1380.000000	0.000689038	1380.000000	0.000796468	1380.000000	0.000784733	1380.000000	0.000783151	1380.000000	0.000796378	1380.000000	8.93478e-08	
+1400.000000	0.000688051	1400.000000	0.000795272	1400.000000	0.000783237	1400.000000	0.000781659	1400.000000	0.000795184	1400.000000	8.81539e-08	
+1420.000000	0.000687135	1420.000000	0.00079415	1420.000000	0.000781804	1420.000000	0.000780231	1420.000000	0.000794063	1420.000000	8.69925e-08	
+1440.000000	0.000686287	1440.000000	0.000793099	1440.000000	0.000780432	1440.000000	0.000778864	1440.000000	0.000793013	1440.000000	8.58623e-08	
+1460.000000	0.000685506	1460.000000	0.000792114	1460.000000	0.000779116	1460.000000	0.000777555	1460.000000	0.00079203	1460.000000	8.47619e-08	
+1480.000000	0.000684788	1480.000000	0.000791195	1480.000000	0.000777856	1480.000000	0.000776301	1480.000000	0.000791111	1480.000000	8.36903e-08	
+1500.000000	0.00068413	1500.000000	0.000790338	1500.000000	0.000776649	1500.000000	0.000775101	1500.000000	0.000790255	1500.000000	8.26463e-08	
+1520.000000	0.000683532	1520.000000	0.000789541	1520.000000	0.000775493	1520.000000	0.000773951	1520.000000	0.000789459	1520.000000	8.16288e-08	
+1540.000000	0.000682991	1540.000000	0.000788801	1540.000000	0.000774387	1540.000000	0.00077285	1540.000000	0.00078872	1540.000000	8.06369e-08	
+1560.000000	0.000682504	1560.000000	0.000788117	1560.000000	0.000773329	1560.000000	0.000771795	1560.000000	0.000788037	1560.000000	7.96695e-08	
+1580.000000	0.00068207	1580.000000	0.000787486	1580.000000	0.000772317	1580.000000	0.000770785	1580.000000	0.000787407	1580.000000	7.87258e-08	
+1600.000000	0.000681687	1600.000000	0.000786906	1600.000000	0.000771349	1600.000000	0.000769817	1600.000000	0.000786828	1600.000000	7.78048e-08	
+1620.000000	0.000681354	1620.000000	0.000786376	1620.000000	0.000770425	1620.000000	0.00076889	1620.000000	0.000786299	1620.000000	7.69059e-08	
+1640.000000	0.000681068	1640.000000	0.000785893	1640.000000	0.000769541	1640.000000	0.000768003	1640.000000	0.000785817	1640.000000	7.60281e-08	
+1660.000000	0.000680828	1660.000000	0.000785456	1660.000000	0.000768696	1660.000000	0.000767153	1660.000000	0.000785381	1660.000000	7.51707e-08	
+1680.000000	0.000680633	1680.000000	0.000785064	1680.000000	0.000767887	1680.000000	0.000766339	1680.000000	0.000784989	1680.000000	7.43331e-08	
+1700.000000	0.000680481	1700.000000	0.000784714	1700.000000	0.000767114	1700.000000	0.00076556	1700.000000	0.000784641	1700.000000	7.35145e-08	
+1750.000000	0.00068028	1750.000000	0.000784017	1750.000000	0.000765321	1750.000000	0.000763756	1750.000000	0.000783946	1750.000000	7.15471e-08	
+1800.000000	0.000680321	1800.000000	0.000783558	1800.000000	0.000763712	1800.000000	0.00076214	1800.000000	0.000783488	1800.000000	6.96853e-08	
+1850.000000	0.000680586	1850.000000	0.000783316	1850.000000	0.000762266	1850.000000	0.000760696	1850.000000	0.000783248	1850.000000	6.79209e-08	
+1900.000000	0.000681058	1900.000000	0.000783275	1900.000000	0.000760971	1900.000000	0.000759407	1900.000000	0.000783208	1900.000000	6.62462e-08	
+1950.000000	0.000681723	1950.000000	0.000783419	1950.000000	0.000759816	1950.000000	0.00075826	1950.000000	0.000783354	1950.000000	6.46545e-08	
+2000.000000	0.000682568	2000.000000	0.000783735	2000.000000	0.00075879	2000.000000	0.000757243	2000.000000	0.000783671	2000.000000	6.31398e-08	
+2100.000000	0.000684754	2100.000000	0.000784832	2100.000000	0.000757085	2100.000000	0.000755553	2100.000000	0.000784772	2100.000000	6.03197e-08	
+2200.000000	0.000687533	2200.000000	0.00078648	2200.000000	0.000755784	2200.000000	0.000754261	2200.000000	0.000786422	2200.000000	5.77477e-08	
+2300.000000	0.000690836	2300.000000	0.000788607	2300.000000	0.000754819	2300.000000	0.000753304	2300.000000	0.000788551	2300.000000	5.53922e-08	
+2400.000000	0.000694606	2400.000000	0.000791152	2400.000000	0.000754137	2400.000000	0.000752631	2400.000000	0.000791099	2400.000000	5.32266e-08	
+2500.000000	0.000698795	2500.000000	0.000794066	2500.000000	0.000753695	2500.000000	0.000752199	2500.000000	0.000794015	2500.000000	5.12286e-08	
+2600.000000	0.000703361	2600.000000	0.000797306	2600.000000	0.00075346	2600.000000	0.000751974	2600.000000	0.000797256	2600.000000	4.93794e-08	
+2700.000000	0.000708269	2700.000000	0.000800834	2700.000000	0.000753404	2700.000000	0.000751925	2700.000000	0.000800786	2700.000000	4.76628e-08	
+2800.000000	0.000713489	2800.000000	0.00080462	2800.000000	0.000753503	2800.000000	0.000752027	2800.000000	0.000804574	2800.000000	4.60649e-08	
+2900.000000	0.000718994	2900.000000	0.000808636	2900.000000	0.000753736	2900.000000	0.00075226	2900.000000	0.000808592	2900.000000	4.45736e-08	
+3000.000000	0.000724761	3000.000000	0.00081286	3000.000000	0.000754084	3000.000000	0.000752605	3000.000000	0.000812817	3000.000000	4.31786e-08	
diff --git a/Inputs/EnergyLoss/proton_Al.txt b/Inputs/EnergyLoss/proton_Al.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6ee3550a609935e4e865000f972f51a68060d160
--- /dev/null
+++ b/Inputs/EnergyLoss/proton_Al.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0537268	0.001000	0.0298658	0.001000	0.0288917	0.001000	0.0288917	0.001000	0.0271127	0.001000	0.00275311	
+0.002000	0.065309	0.002000	0.0393502	0.002000	0.0380195	0.002000	0.0380195	0.002000	0.0370371	0.002000	0.00231317	
+0.005000	0.0867797	0.005000	0.0575316	0.005000	0.0555217	0.005000	0.0555217	0.005000	0.0559384	0.005000	0.0015932	
+0.008000	0.101251	0.008000	0.0703595	0.008000	0.0678762	0.008000	0.0678762	0.008000	0.0691136	0.008000	0.00124587	
+0.010000	0.10908	0.010000	0.0775106	0.010000	0.074765	0.010000	0.074765	0.010000	0.076414	0.010000	0.00109656	
+0.015000	0.131696	0.015000	0.091814	0.015000	0.0892703	0.015000	0.0892703	0.015000	0.0909579	0.015000	0.00085603	
+0.020000	0.1502 	0.020000	0.102587	0.020000	0.101344	0.020000	0.101344	0.020000	0.101876	0.020000	0.000710362	
+0.025000	0.165495	0.025000	0.110818	0.025000	0.111875	0.025000	0.111875	0.025000	0.110206	0.025000	0.000611324	
+0.030000	0.178056	0.030000	0.117071	0.030000	0.117276	0.030000	0.117276	0.030000	0.116532	0.030000	0.000539009	
+0.035000	0.188198	0.035000	0.121729	0.035000	0.121364	0.035000	0.121364	0.035000	0.12125	0.035000	0.000479017	
+0.040000	0.196164	0.040000	0.1251 	0.040000	0.124398	0.040000	0.124398	0.040000	0.124664	0.040000	0.00043554	
+0.045000	0.202174	0.045000	0.127421	0.045000	0.126565	0.045000	0.126565	0.045000	0.127021	0.045000	0.000400006	
+0.050000	0.20644	0.050000	0.128894	0.050000	0.128018	0.050000	0.128018	0.050000	0.128524	0.050000	0.000370357	
+0.055000	0.209169	0.055000	0.129689	0.055000	0.128886	0.055000	0.128886	0.055000	0.129344	0.055000	0.000345202	
+0.060000	0.210565	0.060000	0.129948	0.060000	0.129275	0.060000	0.129275	0.060000	0.129624	0.060000	0.000323559	
+0.070000	0.210137	0.070000	0.129306	0.070000	0.128961	0.070000	0.128961	0.070000	0.129017	0.070000	0.000288155	
+0.080000	0.20659	0.080000	0.127672	0.080000	0.12764	0.080000	0.12764	0.080000	0.127411	0.080000	0.000260336	
+0.090000	0.201102	0.090000	0.125501	0.090000	0.125702	0.090000	0.125702	0.090000	0.125263	0.090000	0.000237839	
+0.100000	0.194567	0.100000	0.123075	0.100000	0.123418	0.100000	0.123418	0.100000	0.122856	0.100000	0.000219231	
+0.120000	0.180657	0.120000	0.118063	0.120000	0.118459	0.120000	0.118459	0.120000	0.117873	0.120000	0.000190157	
+0.140000	0.167611	0.140000	0.113277	0.140000	0.113548	0.140000	0.113548	0.140000	0.113108	0.140000	0.000168401	
+0.160000	0.156285	0.160000	0.108882	0.160000	0.108968	0.160000	0.108968	0.160000	0.10873	0.160000	0.000151451	
+0.180000	0.146715	0.180000	0.104883	0.180000	0.104787	0.180000	0.104787	0.180000	0.104745	0.180000	0.000137837	
+0.200000	0.138663	0.200000	0.101239	0.200000	0.100992	0.200000	0.100992	0.200000	0.101113	0.200000	0.000126642	
+0.250000	0.123371	0.250000	0.0933856	0.250000	0.0929141	0.250000	0.0929141	0.250000	0.0932799	0.250000	0.000105698	
+0.300000	0.112468	0.300000	0.0868857	0.300000	0.0863542	0.300000	0.0863542	0.300000	0.0867946	0.300000	9.10677e-05	
+0.350000	0.104095	0.350000	0.0813729	0.350000	0.0808667	0.350000	0.0808667	0.350000	0.0812927	0.350000	8.02217e-05	
+0.400000	0.0973057	0.400000	0.0766152	0.400000	0.0761708	0.400000	0.0761708	0.400000	0.0765434	0.400000	7.1834e-05	
+0.450000	0.0915916	0.450000	0.0724554	0.450000	0.0720842	0.450000	0.0720842	0.450000	0.0723903	0.450000	6.51383e-05	
+0.500000	0.0866596	0.500000	0.0687808	0.500000	0.0684823	0.500000	0.0684823	0.500000	0.0687211	0.500000	5.96597e-05	
+0.600000	0.0784723	0.600000	0.0625694	0.600000	0.0623968	0.600000	0.0623968	0.600000	0.0625182	0.600000	5.12092e-05	
+0.700000	0.0718731	0.700000	0.0575075	0.700000	0.0574299	0.700000	0.0574299	0.700000	0.0574626	0.700000	4.49755e-05	
+0.800000	0.0663996	0.800000	0.0532937	0.800000	0.0532841	0.800000	0.0532841	0.800000	0.0532535	0.800000	4.01736e-05	
+0.900000	0.0617682	0.900000	0.0497251	0.900000	0.049763	0.900000	0.049763	0.900000	0.0496888	0.900000	3.63528e-05	
+1.000000	0.0577896	1.000000	0.0466597	1.000000	0.04673	1.000000	0.04673	1.000000	0.0466264	1.000000	3.32351e-05	
+1.250000	0.0499035	1.250000	0.0405867	1.250000	0.0406967	1.250000	0.0406967	1.250000	0.0405593	1.250000	2.74651e-05	
+1.500000	0.0440283	1.500000	0.0360625	1.500000	0.0361804	1.500000	0.0361804	1.500000	0.036039	1.500000	2.34847e-05	
+1.750000	0.0394677	1.750000	0.0325467	1.750000	0.0326583	1.750000	0.0326583	1.750000	0.0325262	1.750000	2.05625e-05	
+2.000000	0.0358166	2.000000	0.0297268	2.000000	0.029826	2.000000	0.029826	2.000000	0.0297085	2.000000	1.83202e-05	
+2.250000	0.0328226	2.250000	0.0274087	2.250000	0.0274933	2.250000	0.0274933	2.250000	0.0273922	2.250000	1.65418e-05	
+2.500000	0.0301896	2.500000	0.0254654	2.500000	0.025535	2.500000	0.025535	2.500000	0.0254503	2.500000	1.50946e-05	
+3.000000	0.0263609	3.000000	0.0223805	3.000000	0.022422	3.000000	0.022422	3.000000	0.0223676	3.000000	1.28774e-05	
+3.500000	0.0234551	3.500000	0.020032	3.500000	0.0200493	3.500000	0.0200493	3.500000	0.0200208	3.500000	1.12542e-05	
+4.000000	0.0211681	4.000000	0.0181774	4.000000	0.0181745	4.000000	0.0181745	4.000000	0.0181674	4.000000	1.00114e-05	
+4.500000	0.0193175	4.500000	0.0166714	4.500000	0.0166516	4.500000	0.0166516	4.500000	0.0166623	4.500000	9.02761e-06	
+5.000000	0.0177868	5.000000	0.0154211	5.000000	0.0153875	5.000000	0.0153875	5.000000	0.0154129	5.000000	8.22837e-06	
+5.500000	0.016498	5.500000	0.0143647	5.500000	0.0143195	5.500000	0.0143195	5.500000	0.0143572	5.500000	7.56547e-06	
+6.000000	0.0153968	6.000000	0.0134589	6.000000	0.0134039	6.000000	0.0134039	6.000000	0.0134519	6.000000	7.00626e-06	
+6.500000	0.0144443	6.500000	0.0126725	6.500000	0.0126095	6.500000	0.0126095	6.500000	0.012666	6.500000	6.52781e-06	
+7.000000	0.0136117	7.000000	0.0119828	7.000000	0.0119128	7.000000	0.0119128	7.000000	0.0119767	7.000000	6.11355e-06	
+7.500000	0.0128772	7.500000	0.0113723	7.500000	0.0112965	7.500000	0.0112965	7.500000	0.0113665	7.500000	5.75117e-06	
+8.000000	0.0122241	8.000000	0.0108276	8.000000	0.0107469	8.000000	0.0107469	8.000000	0.0108222	8.000000	5.43136e-06	
+8.500000	0.0116393	8.500000	0.0103384	8.500000	0.0102534	8.500000	0.0102534	8.500000	0.0103332	8.500000	5.1469e-06	
+9.000000	0.0111125	9.000000	0.00989621	9.000000	0.00980764	9.000000	0.00980764	9.000000	0.00989132	9.000000	4.89217e-06	
+9.500000	0.0106352	9.500000	0.00949441	9.500000	0.00940275	9.500000	0.00940275	9.500000	0.00948975	9.500000	4.66264e-06	
+10.000000	0.0102006	10.000000	0.00917117	10.000000	0.00903319	10.000000	0.00903319	10.000000	0.00916671	10.000000	4.45471e-06	
+11.000000	0.00943831	11.000000	0.0085459	11.000000	0.00838473	11.000000	0.00838481	11.000000	0.00854181	11.000000	4.0923e-06	
+12.000000	0.00879089	12.000000	0.00800538	12.000000	0.00783245	12.000000	0.00783262	12.000000	0.0080016	12.000000	3.7869e-06	
+13.000000	0.0082338	13.000000	0.00753351	13.000000	0.0073562	13.000000	0.0073563	13.000000	0.00752998	13.000000	3.52585e-06	
+14.000000	0.00774904	14.000000	0.00711796	14.000000	0.00694095	14.000000	0.00694094	14.000000	0.00711466	14.000000	3.30001e-06	
+15.000000	0.00732315	15.000000	0.00674918	15.000000	0.00657532	15.000000	0.00657533	15.000000	0.00674608	15.000000	3.1026e-06	
+16.000000	0.00694583	16.000000	0.00641965	16.000000	0.00625097	16.000000	0.00625089	16.000000	0.00641672	16.000000	2.92851e-06	
+17.000000	0.00660908	17.000000	0.00612337	17.000000	0.00596127	17.000000	0.00596092	17.000000	0.0061206	17.000000	2.77376e-06	
+18.000000	0.00630657	18.000000	0.00585551	18.000000	0.00570062	18.000000	0.00570015	18.000000	0.00585288	18.000000	2.63526e-06	
+19.000000	0.00603325	19.000000	0.00561213	19.000000	0.00546478	19.000000	0.00546431	19.000000	0.00560962	19.000000	2.51054e-06	
+20.000000	0.005785	20.000000	0.00538998	20.000000	0.00525045	20.000000	0.00524998	20.000000	0.00538758	20.000000	2.39762e-06	
+21.000000	0.00555847	21.000000	0.00518637	21.000000	0.00505482	21.000000	0.00505431	21.000000	0.00518408	21.000000	2.29486e-06	
+22.000000	0.00535087	22.000000	0.00499905	22.000000	0.00487545	22.000000	0.00487496	22.000000	0.00499685	22.000000	2.20094e-06	
+23.000000	0.00515989	23.000000	0.00482612	23.000000	0.00471048	23.000000	0.00470998	23.000000	0.004824	23.000000	2.11474e-06	
+24.000000	0.00498357	24.000000	0.00466595	24.000000	0.00455841	24.000000	0.00455771	24.000000	0.00466392	24.000000	2.03534e-06	
+25.000000	0.00482024	25.000000	0.00451717	25.000000	0.00441776	25.000000	0.00441675	25.000000	0.00451521	25.000000	1.96194e-06	
+27.000000	0.00452715	27.000000	0.00424919	27.000000	0.00416541	27.000000	0.00416412	27.000000	0.00424736	27.000000	1.83062e-06	
+29.000000	0.00427149	29.000000	0.00401443	29.000000	0.00394561	29.000000	0.00394435	29.000000	0.00401271	29.000000	1.71647e-06	
+31.000000	0.00404641	31.000000	0.00380701	31.000000	0.00374826	31.000000	0.00374699	31.000000	0.00380539	31.000000	1.6163e-06	
+33.000000	0.00384663	33.000000	0.00362235	33.000000	0.00356846	33.000000	0.00356726	33.000000	0.00362083	33.000000	1.52765e-06	
+35.000000	0.00366804	35.000000	0.00345687	35.000000	0.00340719	35.000000	0.00340613	35.000000	0.00345542	35.000000	1.44862e-06	
+38.000000	0.00343292	38.000000	0.00323845	38.000000	0.00319476	38.000000	0.00319332	38.000000	0.0032371	38.000000	1.34488e-06	
+41.000000	0.00322984	41.000000	0.0030493	41.000000	0.00301036	41.000000	0.00300888	41.000000	0.00304805	41.000000	1.25558e-06	
+44.000000	0.00305254	44.000000	0.00288386	44.000000	0.00284875	44.000000	0.00284739	44.000000	0.00288268	44.000000	1.17786e-06	
+47.000000	0.00289632	47.000000	0.00273786	47.000000	0.00270603	47.000000	0.00270475	47.000000	0.00273675	47.000000	1.10957e-06	
+50.000000	0.00275757	50.000000	0.00260803	50.000000	0.00257898	50.000000	0.00257778	50.000000	0.00260698	50.000000	1.04908e-06	
+55.000000	0.0025577	55.000000	0.00242083	55.000000	0.00239556	55.000000	0.00239445	55.000000	0.00241987	55.000000	9.6222e-07	
+60.000000	0.00238896	60.000000	0.00226265	60.000000	0.00224038	60.000000	0.00223928	60.000000	0.00226176	60.000000	8.89159e-07	
+65.000000	0.00224445	65.000000	0.00212716	65.000000	0.00210746	65.000000	0.00210617	65.000000	0.00212633	65.000000	8.26812e-07	
+70.000000	0.00211922	70.000000	0.00200974	70.000000	0.00199182	70.000000	0.00199064	70.000000	0.00200897	70.000000	7.72955e-07	
+75.000000	0.00200957	75.000000	0.00190698	75.000000	0.00189051	75.000000	0.0018894	75.000000	0.00190626	75.000000	7.25944e-07	
+80.000000	0.00191272	80.000000	0.00181626	80.000000	0.00180095	80.000000	0.0017999	80.000000	0.00181558	80.000000	6.84536e-07	
+85.000000	0.00182649	85.000000	0.00173556	85.000000	0.00172119	85.000000	0.0017202	85.000000	0.00173491	85.000000	6.47773e-07	
+90.000000	0.00174919	90.000000	0.00166329	90.000000	0.0016497	90.000000	0.00164874	90.000000	0.00166268	90.000000	6.14905e-07	
+95.000000	0.00167947	95.000000	0.00159819	95.000000	0.00158544	95.000000	0.00158431	95.000000	0.0015976	95.000000	5.85338e-07	
+100.000000	0.00161625	100.000000	0.00153922	100.000000	0.00152698	100.000000	0.00152589	100.000000	0.00153866	100.000000	5.58591e-07	
+105.000000	0.00155864	105.000000	0.00148555	105.000000	0.00147372	105.000000	0.00147268	105.000000	0.00148502	105.000000	5.34274e-07	
+110.000000	0.0015059	110.000000	0.0014365	110.000000	0.00142501	110.000000	0.00142401	110.000000	0.00143598	110.000000	5.12067e-07	
+115.000000	0.00145744	115.000000	0.00139148	115.000000	0.00138027	115.000000	0.00137931	115.000000	0.00139099	115.000000	4.91702e-07	
+120.000000	0.00141272	120.000000	0.00135001	120.000000	0.00133904	120.000000	0.00133811	120.000000	0.00134954	120.000000	4.72957e-07	
+125.000000	0.00137134	125.000000	0.00131169	125.000000	0.00130092	125.000000	0.00130002	125.000000	0.00131124	125.000000	4.55643e-07	
+130.000000	0.00133291	130.000000	0.00127617	130.000000	0.00126556	130.000000	0.00126468	130.000000	0.00127573	130.000000	4.396e-07	
+135.000000	0.00129712	135.000000	0.00124315	135.000000	0.00123265	135.000000	0.00123182	135.000000	0.00124272	135.000000	4.24692e-07	
+140.000000	0.00126371	140.000000	0.00121237	140.000000	0.00120207	140.000000	0.00120118	140.000000	0.00121196	140.000000	4.10801e-07	
+145.000000	0.00123244	145.000000	0.00118361	145.000000	0.00117351	145.000000	0.00117254	145.000000	0.00118321	145.000000	3.97824e-07	
+150.000000	0.00120311	150.000000	0.00115668	150.000000	0.00114665	150.000000	0.00114571	150.000000	0.0011563	150.000000	3.85674e-07	
+155.000000	0.0011618	155.000000	0.00113141	155.000000	0.00112143	155.000000	0.00112053	155.000000	0.00113103	155.000000	3.74272e-07	
+160.000000	0.00113759	160.000000	0.00110764	160.000000	0.00109772	160.000000	0.00109684	160.000000	0.00110728	160.000000	3.63551e-07	
+165.000000	0.00111476	165.000000	0.00108526	165.000000	0.00107538	165.000000	0.00107452	165.000000	0.0010849	165.000000	3.5345e-07	
+170.000000	0.00109319	170.000000	0.00106413	170.000000	0.00105429	170.000000	0.00105345	170.000000	0.00106379	170.000000	3.43917e-07	
+175.000000	0.00107279	175.000000	0.00104416	175.000000	0.00103436	175.000000	0.00103353	175.000000	0.00104382	175.000000	3.34905e-07	
+180.000000	0.00105345	180.000000	0.00102525	180.000000	0.00101548	180.000000	0.00101467	180.000000	0.00102492	180.000000	3.26371e-07	
+185.000000	0.00103509	185.000000	0.00100732	185.000000	0.00099758	185.000000	0.00099679	185.000000	0.00100701	185.000000	3.18277e-07	
+190.000000	0.00101765	190.000000	0.000990304	190.000000	0.000980587	190.000000	0.00097981	190.000000	0.000989993	190.000000	3.10591e-07	
+195.000000	0.00100105	195.000000	0.000974122	195.000000	0.000964418	195.000000	0.000963666	195.000000	0.000973819	195.000000	3.03282e-07	
+200.000000	0.000985233	200.000000	0.00095872	200.000000	0.000949031	200.000000	0.000948299	200.000000	0.000958423	200.000000	2.96322e-07	
+210.000000	0.000955735	210.000000	0.000930036	210.000000	0.000920499	210.000000	0.000919681	210.000000	0.000929752	210.000000	2.83353e-07	
+220.000000	0.000928775	220.000000	0.000903871	220.000000	0.000894395	220.000000	0.00089358	220.000000	0.000903599	220.000000	2.71512e-07	
+230.000000	0.000904037	230.000000	0.000879908	230.000000	0.000870462	230.000000	0.00086968	230.000000	0.000879647	230.000000	2.60656e-07	
+240.000000	0.000881255	240.000000	0.000857881	240.000000	0.000848478	240.000000	0.000847716	240.000000	0.000857631	240.000000	2.50667e-07	
+250.000000	0.000860204	250.000000	0.000837567	250.000000	0.000828206	250.000000	0.000827466	250.000000	0.000837326	250.000000	2.41442e-07	
+260.000000	0.000840695	260.000000	0.000818774	260.000000	0.000809459	260.000000	0.00080874	260.000000	0.000818541	260.000000	2.32897e-07	
+270.000000	0.000822562	270.000000	0.00080134	270.000000	0.000792076	270.000000	0.000791374	270.000000	0.000801115	270.000000	2.24958e-07	
+280.000000	0.000805666	280.000000	0.000785123	280.000000	0.000775914	280.000000	0.000775228	280.000000	0.000784906	280.000000	2.17562e-07	
+290.000000	0.000789885	290.000000	0.000770002	290.000000	0.00076084	290.000000	0.000760181	290.000000	0.000769792	290.000000	2.10654e-07	
+300.000000	0.000775111	300.000000	0.000755871	300.000000	0.000746818	300.000000	0.000746127	300.000000	0.000755667	300.000000	2.04188e-07	
+310.000000	0.000761253	310.000000	0.000742638	310.000000	0.00073371	310.000000	0.000732973	310.000000	0.00074244	310.000000	1.98121e-07	
+320.000000	0.000748227	320.000000	0.00073022	320.000000	0.000721359	320.000000	0.000720637	320.000000	0.000730028	320.000000	1.92417e-07	
+330.000000	0.000735962	330.000000	0.000718547	330.000000	0.000709749	330.000000	0.000709048	330.000000	0.00071836	330.000000	1.87044e-07	
+340.000000	0.000724395	340.000000	0.000707555	340.000000	0.000698833	340.000000	0.000698142	340.000000	0.000707373	340.000000	1.81974e-07	
+350.000000	0.000713467	350.000000	0.000697187	350.000000	0.000688541	350.000000	0.000687862	350.000000	0.000697009	350.000000	1.77182e-07	
+360.000000	0.000703128	360.000000	0.000687392	360.000000	0.000678824	360.000000	0.000678158	360.000000	0.00068722	360.000000	1.72644e-07	
+370.000000	0.000693333	370.000000	0.000678127	370.000000	0.00066964	370.000000	0.000668984	370.000000	0.000677959	370.000000	1.68342e-07	
+380.000000	0.000684041	380.000000	0.00066935	380.000000	0.000660946	380.000000	0.0006603	380.000000	0.000669186	380.000000	1.64257e-07	
+390.000000	0.000675215	390.000000	0.000661025	390.000000	0.000652705	390.000000	0.000652069	390.000000	0.000660865	390.000000	1.60372e-07	
+400.000000	0.000666822	400.000000	0.00065312	400.000000	0.000644884	400.000000	0.000644258	400.000000	0.000652963	400.000000	1.56674e-07	
+410.000000	0.000658831	410.000000	0.000645603	410.000000	0.000637455	410.000000	0.000636838	410.000000	0.00064545	410.000000	1.53149e-07	
+420.000000	0.000651215	420.000000	0.00063845	420.000000	0.000630391	420.000000	0.00062978	420.000000	0.0006383	420.000000	1.49784e-07	
+430.000000	0.00064395	430.000000	0.000631634	430.000000	0.000623663	430.000000	0.000623061	430.000000	0.000631488	430.000000	1.46569e-07	
+440.000000	0.000637012	440.000000	0.000625134	440.000000	0.000617245	440.000000	0.000616658	440.000000	0.000624991	440.000000	1.43495e-07	
+450.000000	0.000630381	450.000000	0.00061893	450.000000	0.000611131	450.000000	0.00061055	450.000000	0.000618789	450.000000	1.40552e-07	
+460.000000	0.000624038	460.000000	0.000613002	460.000000	0.000605316	460.000000	0.000604718	460.000000	0.000612864	460.000000	1.37731e-07	
+470.000000	0.000617965	470.000000	0.000607333	470.000000	0.000599772	470.000000	0.000599146	470.000000	0.000607198	470.000000	1.35025e-07	
+480.000000	0.000612147	480.000000	0.000601908	480.000000	0.000594459	480.000000	0.000593817	480.000000	0.000601776	480.000000	1.32428e-07	
+490.000000	0.000606568	490.000000	0.000596713	490.000000	0.000589354	490.000000	0.000588716	490.000000	0.000596583	490.000000	1.29932e-07	
+500.000000	0.000601215	500.000000	0.000591733	500.000000	0.000584456	500.000000	0.000583831	500.000000	0.000591605	500.000000	1.27532e-07	
+520.000000	0.000591137	520.000000	0.000582373	520.000000	0.000575269	520.000000	0.000574658	520.000000	0.00058225	520.000000	1.22997e-07	
+540.000000	0.000581823	540.000000	0.00057374	540.000000	0.00056681	540.000000	0.000566209	540.000000	0.000573622	540.000000	1.18785e-07	
+560.000000	0.000573195	560.000000	0.000565759	560.000000	0.000558996	560.000000	0.000558407	560.000000	0.000565644	560.000000	1.14862e-07	
+580.000000	0.000565185	580.000000	0.000558364	580.000000	0.000551765	580.000000	0.000551185	580.000000	0.000558253	580.000000	1.11198e-07	
+600.000000	0.000557735	600.000000	0.000551498	600.000000	0.000545058	600.000000	0.000544487	600.000000	0.00055139	600.000000	1.07769e-07	
+620.000000	0.000550794	620.000000	0.000545111	620.000000	0.000538824	620.000000	0.000538262	620.000000	0.000545006	620.000000	1.04553e-07	
+640.000000	0.000544316	640.000000	0.00053916	640.000000	0.000533022	640.000000	0.000532466	640.000000	0.000539058	640.000000	1.01529e-07	
+660.000000	0.000538261	660.000000	0.000533605	660.000000	0.000527607	660.000000	0.00052706	660.000000	0.000533506	660.000000	9.86815e-08	
+680.000000	0.000532594	680.000000	0.000528414	680.000000	0.000522544	680.000000	0.00052201	680.000000	0.000528318	680.000000	9.59947e-08	
+700.000000	0.000527283	700.000000	0.000523555	700.000000	0.000517824	700.000000	0.000517285	700.000000	0.000523461	700.000000	9.34555e-08	
+720.000000	0.000522301	720.000000	0.000519001	720.000000	0.000513421	720.000000	0.000512859	720.000000	0.00051891	720.000000	9.10517e-08	
+740.000000	0.000517622	740.000000	0.000514729	740.000000	0.00050932	740.000000	0.000508739	740.000000	0.00051464	740.000000	8.87727e-08	
+760.000000	0.000513223	760.000000	0.000510717	760.000000	0.000505526	760.000000	0.000504946	760.000000	0.000510631	760.000000	8.6609e-08	
+780.000000	0.000509084	780.000000	0.000506945	780.000000	0.000501948	780.000000	0.000501379	780.000000	0.000506861	780.000000	8.45519e-08	
+800.000000	0.000505187	800.000000	0.000503396	800.000000	0.000498581	800.000000	0.00049802	800.000000	0.000503314	800.000000	8.25935e-08	
+820.000000	0.000501515	820.000000	0.000500054	820.000000	0.00049541	820.000000	0.000494854	820.000000	0.000499973	820.000000	8.0727e-08	
+840.000000	0.000498052	840.000000	0.000496904	840.000000	0.00049242	840.000000	0.000491868	840.000000	0.000496825	840.000000	7.89459e-08	
+860.000000	0.000494786	860.000000	0.000493934	860.000000	0.000489596	860.000000	0.000489048	860.000000	0.000493857	860.000000	7.72443e-08	
+880.000000	0.000491702	880.000000	0.000491131	880.000000	0.000486927	880.000000	0.000486383	880.000000	0.000491055	880.000000	7.56171e-08	
+900.000000	0.000488791	900.000000	0.000488484	900.000000	0.000484402	900.000000	0.000483863	900.000000	0.00048841	900.000000	7.40594e-08	
+920.000000	0.000486041	920.000000	0.000485984	920.000000	0.000482013	920.000000	0.000481478	920.000000	0.000485912	920.000000	7.25668e-08	
+940.000000	0.000483442	940.000000	0.000483621	940.000000	0.000479751	940.000000	0.00047922	940.000000	0.00048355	940.000000	7.11352e-08	
+960.000000	0.000480986	960.000000	0.000481388	960.000000	0.000477607	960.000000	0.000477079	960.000000	0.000481318	960.000000	6.9761e-08	
+980.000000	0.000478664	980.000000	0.000479275	980.000000	0.000475574	980.000000	0.00047505	980.000000	0.000479207	980.000000	6.84406e-08	
+1000.000000	0.000476469	1000.000000	0.000477277	1000.000000	0.000473645	1000.000000	0.000473124	1000.000000	0.00047721	1000.000000	6.71711e-08	
+1020.000000	0.000474394	1020.000000	0.000475386	1020.000000	0.000471814	1020.000000	0.000471296	1020.000000	0.000475321	1020.000000	6.59494e-08	
+1040.000000	0.000472432	1040.000000	0.000473597	1040.000000	0.000470074	1040.000000	0.00046956	1040.000000	0.000473533	1040.000000	6.47729e-08	
+1060.000000	0.000470577	1060.000000	0.000471904	1060.000000	0.000468422	1060.000000	0.00046791	1060.000000	0.00047184	1060.000000	6.3639e-08	
+1080.000000	0.000468824	1080.000000	0.000470302	1080.000000	0.00046685	1080.000000	0.000466342	1080.000000	0.000470239	1080.000000	6.25455e-08	
+1100.000000	0.000467168	1100.000000	0.000468785	1100.000000	0.000465356	1100.000000	0.00046485	1100.000000	0.000468723	1100.000000	6.14903e-08	
+1120.000000	0.000465603	1120.000000	0.000467349	1120.000000	0.000463935	1120.000000	0.000463431	1120.000000	0.000467289	1120.000000	6.04713e-08	
+1140.000000	0.000464125	1140.000000	0.000465991	1140.000000	0.000462583	1140.000000	0.000462081	1140.000000	0.000465932	1140.000000	5.94867e-08	
+1160.000000	0.00046273	1160.000000	0.000464706	1160.000000	0.000461295	1160.000000	0.000460795	1160.000000	0.000464648	1160.000000	5.85347e-08	
+1180.000000	0.000461414	1180.000000	0.000463491	1180.000000	0.000460069	1180.000000	0.000459571	1180.000000	0.000463433	1180.000000	5.76137e-08	
+1200.000000	0.000460174	1200.000000	0.000462341	1200.000000	0.000458899	1200.000000	0.000458404	1200.000000	0.000462285	1200.000000	5.67223e-08	
+1220.000000	0.000459005	1220.000000	0.000461255	1220.000000	0.000457784	1220.000000	0.000457293	1220.000000	0.000461199	1220.000000	5.5859e-08	
+1240.000000	0.000457905	1240.000000	0.000460229	1240.000000	0.00045672	1240.000000	0.000456234	1240.000000	0.000460174	1240.000000	5.50225e-08	
+1260.000000	0.00045687	1260.000000	0.000459259	1260.000000	0.000455707	1260.000000	0.000455224	1260.000000	0.000459205	1260.000000	5.42115e-08	
+1280.000000	0.000455898	1280.000000	0.000458345	1280.000000	0.000454743	1280.000000	0.000454262	1280.000000	0.000458291	1280.000000	5.34249e-08	
+1300.000000	0.000454986	1300.000000	0.000457482	1300.000000	0.000453825	1300.000000	0.000453344	1300.000000	0.000457429	1300.000000	5.26615e-08	
+1320.000000	0.000454131	1320.000000	0.000456669	1320.000000	0.000452953	1320.000000	0.000452469	1320.000000	0.000456617	1320.000000	5.19205e-08	
+1340.000000	0.000453332	1340.000000	0.000455904	1340.000000	0.000452123	1340.000000	0.000451634	1340.000000	0.000455853	1340.000000	5.12007e-08	
+1360.000000	0.000452585	1360.000000	0.000455184	1360.000000	0.000451333	1360.000000	0.000450838	1360.000000	0.000455134	1360.000000	5.05012e-08	
+1380.000000	0.000451889	1380.000000	0.000454508	1380.000000	0.000450581	1380.000000	0.000450078	1380.000000	0.000454458	1380.000000	4.98213e-08	
+1400.000000	0.000451241	1400.000000	0.000453873	1400.000000	0.000449863	1400.000000	0.000449354	1400.000000	0.000453824	1400.000000	4.91601e-08	
+1420.000000	0.00045064	1420.000000	0.000453279	1420.000000	0.000449177	1420.000000	0.000448663	1420.000000	0.00045323	1420.000000	4.85167e-08	
+1440.000000	0.000450085	1440.000000	0.000452722	1440.000000	0.000448522	1440.000000	0.000448003	1440.000000	0.000452675	1440.000000	4.78906e-08	
+1460.000000	0.000449572	1460.000000	0.000452203	1460.000000	0.000447895	1460.000000	0.000447375	1460.000000	0.000452156	1460.000000	4.7281e-08	
+1480.000000	0.000449101	1480.000000	0.000451719	1480.000000	0.000447296	1480.000000	0.000446775	1480.000000	0.000451672	1480.000000	4.66872e-08	
+1500.000000	0.00044867	1500.000000	0.000451268	1500.000000	0.000446723	1500.000000	0.000446203	1500.000000	0.000451222	1500.000000	4.61087e-08	
+1520.000000	0.000448278	1520.000000	0.000450851	1520.000000	0.000446176	1520.000000	0.000445657	1520.000000	0.000450805	1520.000000	4.55448e-08	
+1540.000000	0.000447923	1540.000000	0.000450464	1540.000000	0.000445653	1540.000000	0.000445137	1540.000000	0.000450419	1540.000000	4.4995e-08	
+1560.000000	0.000447603	1560.000000	0.000450108	1560.000000	0.000445155	1560.000000	0.000444641	1560.000000	0.000450064	1560.000000	4.44588e-08	
+1580.000000	0.000447319	1580.000000	0.000449781	1580.000000	0.00044468	1580.000000	0.000444169	1580.000000	0.000449737	1580.000000	4.39356e-08	
+1600.000000	0.000447068	1600.000000	0.000449482	1600.000000	0.000444227	1600.000000	0.000443718	1600.000000	0.000449438	1600.000000	4.34251e-08	
+1620.000000	0.000446849	1620.000000	0.00044921	1620.000000	0.000443796	1620.000000	0.000443289	1620.000000	0.000449167	1620.000000	4.29266e-08	
+1640.000000	0.000446662	1640.000000	0.000448963	1640.000000	0.000443386	1640.000000	0.000442881	1640.000000	0.000448921	1640.000000	4.24399e-08	
+1660.000000	0.000446504	1660.000000	0.000448742	1660.000000	0.000442996	1660.000000	0.000442492	1660.000000	0.0004487	1660.000000	4.19644e-08	
+1680.000000	0.000446376	1680.000000	0.000448545	1680.000000	0.000442624	1680.000000	0.000442122	1680.000000	0.000448503	1680.000000	4.14999e-08	
+1700.000000	0.000446276	1700.000000	0.000448371	1700.000000	0.000442272	1700.000000	0.00044177	1700.000000	0.00044833	1700.000000	4.10458e-08	
+1750.000000	0.000446145	1750.000000	0.000448033	1750.000000	0.000441464	1750.000000	0.000440964	1750.000000	0.000447993	1750.000000	3.99545e-08	
+1800.000000	0.000446172	1800.000000	0.000447824	1800.000000	0.000440754	1800.000000	0.000440257	1800.000000	0.000447785	1800.000000	3.89215e-08	
+1850.000000	0.000446345	1850.000000	0.000447733	1850.000000	0.000440133	1850.000000	0.000439638	1850.000000	0.000447695	1850.000000	3.79423e-08	
+1900.000000	0.000446655	1900.000000	0.000447752	1900.000000	0.000439593	1900.000000	0.000439099	1900.000000	0.000447715	1900.000000	3.70128e-08	
+1950.000000	0.000447091	1950.000000	0.000447872	1950.000000	0.000439125	1950.000000	0.000438634	1950.000000	0.000447836	1950.000000	3.61292e-08	
+2000.000000	0.000447646	2000.000000	0.000448086	2000.000000	0.000438724	2000.000000	0.000438235	2000.000000	0.000448051	2000.000000	3.52882e-08	
+2100.000000	0.000449079	2100.000000	0.000448766	2100.000000	0.0004381	2100.000000	0.000437614	2100.000000	0.000448733	2100.000000	3.37219e-08	
+2200.000000	0.000450901	2200.000000	0.000449747	2200.000000	0.000437679	2200.000000	0.000437197	2200.000000	0.000449715	2200.000000	3.2293e-08	
+2300.000000	0.000453067	2300.000000	0.000450988	2300.000000	0.000437429	2300.000000	0.000436949	2300.000000	0.000450957	2300.000000	3.09839e-08	
+2400.000000	0.00045554	2400.000000	0.000452458	2400.000000	0.000437322	2400.000000	0.000436845	2400.000000	0.000452428	2400.000000	2.978e-08	
+2500.000000	0.000458287	2500.000000	0.000454128	2500.000000	0.000437336	2500.000000	0.000436861	2500.000000	0.000454099	2500.000000	2.8669e-08	
+2600.000000	0.000461282	2600.000000	0.000455975	2600.000000	0.000437453	2600.000000	0.00043698	2600.000000	0.000455948	2600.000000	2.76405e-08	
+2700.000000	0.000464501	2700.000000	0.00045798	2700.000000	0.000437656	2700.000000	0.000437186	2700.000000	0.000457953	2700.000000	2.66854e-08	
+2800.000000	0.000467924	2800.000000	0.000460125	2800.000000	0.000437934	2800.000000	0.000437465	2800.000000	0.000460099	2800.000000	2.57962e-08	
+2900.000000	0.000471534	2900.000000	0.000462396	2900.000000	0.000438275	2900.000000	0.000437807	2900.000000	0.000462371	2900.000000	2.49661e-08	
+3000.000000	0.000475317	3000.000000	0.000464779	3000.000000	0.000438669	3000.000000	0.000438203	3000.000000	0.000464755	3000.000000	2.41894e-08	
diff --git a/Inputs/EnergyLoss/proton_D2gaz_1b_26K.txt b/Inputs/EnergyLoss/proton_D2gaz_1b_26K.txt
new file mode 100644
index 0000000000000000000000000000000000000000..4c9857bf38f019a527c54697f8b3c393fb31b9eb
--- /dev/null
+++ b/Inputs/EnergyLoss/proton_D2gaz_1b_26K.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	3.70441e-06	0.001000	8.27996e-06	0.001000	8.81526e-06	0.001000	8.81526e-06	0.001000	7.39851e-06	0.001000	8.81446e-07	
+0.002000	4.50298e-06	0.002000	9.99137e-06	0.002000	9.99646e-06	0.002000	9.99646e-06	0.002000	9.42985e-06	0.002000	5.61516e-07	
+0.005000	5.98337e-06	0.005000	1.32833e-05	0.005000	1.21519e-05	0.005000	1.21519e-05	0.005000	1.29952e-05	0.005000	2.88106e-07	
+0.008000	6.98117e-06	0.008000	1.55201e-05	0.008000	1.35442e-05	0.008000	1.35442e-05	0.008000	1.53188e-05	0.008000	2.01222e-07	
+0.010000	7.52092e-06	0.010000	1.67322e-05	0.010000	1.42775e-05	0.010000	1.42775e-05	0.010000	1.65632e-05	0.010000	1.69013e-07	
+0.015000	9.0803e-06	0.015000	2.12236e-05	0.015000	1.5736e-05	0.015000	1.5736e-05	0.015000	2.11012e-05	0.015000	1.22409e-07	
+0.020000	1.03561e-05	0.020000	2.48676e-05	0.020000	1.68749e-05	0.020000	1.68749e-05	0.020000	2.47706e-05	0.020000	9.69869e-08	
+0.025000	1.14107e-05	0.025000	2.78219e-05	0.025000	1.78213e-05	0.025000	1.78213e-05	0.025000	2.77411e-05	0.025000	8.08037e-08	
+0.030000	1.22768e-05	0.030000	3.01821e-05	0.030000	1.91438e-05	0.030000	1.91438e-05	0.030000	3.01126e-05	0.030000	6.95249e-08	
+0.035000	1.2976e-05	0.035000	3.20215e-05	0.035000	2.02596e-05	0.035000	2.02596e-05	0.035000	3.19603e-05	0.035000	6.11787e-08	
+0.040000	1.35253e-05	0.040000	3.34046e-05	0.040000	2.12007e-05	0.040000	2.12007e-05	0.040000	3.33499e-05	0.040000	5.47335e-08	
+0.045000	1.39397e-05	0.045000	3.43916e-05	0.045000	2.19909e-05	0.045000	2.19909e-05	0.045000	3.4342e-05	0.045000	4.95945e-08	
+0.050000	1.42338e-05	0.050000	3.50388e-05	0.050000	2.26492e-05	0.050000	2.26492e-05	0.050000	3.49934e-05	0.050000	4.53939e-08	
+0.055000	1.4422e-05	0.055000	3.53989e-05	0.055000	2.31911e-05	0.055000	2.31911e-05	0.055000	3.5357e-05	0.055000	4.18912e-08	
+0.060000	1.45182e-05	0.060000	3.55202e-05	0.060000	2.36297e-05	0.060000	2.36297e-05	0.060000	3.54812e-05	0.060000	3.89225e-08	
+0.070000	1.44887e-05	0.070000	3.52141e-05	0.070000	2.42421e-05	0.070000	2.42421e-05	0.070000	3.518e-05	0.070000	3.41551e-08	
+0.080000	1.42441e-05	0.080000	3.44061e-05	0.080000	2.45637e-05	0.080000	2.45637e-05	0.080000	3.43756e-05	0.080000	3.04868e-08	
+0.090000	1.38658e-05	0.090000	3.33052e-05	0.090000	2.46565e-05	0.090000	2.46565e-05	0.090000	3.32776e-05	0.090000	2.75706e-08	
+0.100000	1.34152e-05	0.100000	3.20559e-05	0.100000	2.45712e-05	0.100000	2.45712e-05	0.100000	3.20307e-05	0.100000	2.5193e-08	
+0.120000	1.24561e-05	0.120000	2.9459e-05	0.120000	2.40236e-05	0.120000	2.40236e-05	0.120000	2.94375e-05	0.120000	2.15413e-08	
+0.140000	1.15566e-05	0.140000	2.7018e-05	0.140000	2.31668e-05	0.140000	2.31668e-05	0.140000	2.69992e-05	0.140000	1.88604e-08	
+0.160000	1.07757e-05	0.160000	2.48576e-05	0.160000	2.21592e-05	0.160000	2.21592e-05	0.160000	2.48408e-05	0.160000	1.68034e-08	
+0.180000	1.01159e-05	0.180000	2.29882e-05	0.180000	2.10995e-05	0.180000	2.10995e-05	0.180000	2.2973e-05	0.180000	1.5172e-08	
+0.200000	9.56067e-06	0.200000	2.138e-05	0.200000	2.00471e-05	0.200000	2.00471e-05	0.200000	2.13661e-05	0.200000	1.38445e-08	
+0.250000	8.50632e-06	0.250000	1.82497e-05	0.250000	1.76285e-05	0.250000	1.76285e-05	0.250000	1.82383e-05	0.250000	1.1397e-08	
+0.300000	7.75453e-06	0.300000	1.59993e-05	0.300000	1.56136e-05	0.300000	1.56136e-05	0.300000	1.59895e-05	0.300000	9.71637e-09	
+0.350000	7.17725e-06	0.350000	1.43047e-05	0.350000	1.39784e-05	0.350000	1.39784e-05	0.350000	1.42962e-05	0.350000	8.48691e-09	
+0.400000	6.70913e-06	0.400000	1.29775e-05	0.400000	1.2652e-05	0.400000	1.2652e-05	0.400000	1.29699e-05	0.400000	7.54626e-09	
+0.450000	6.31514e-06	0.450000	1.19049e-05	0.450000	1.15662e-05	0.450000	1.15662e-05	0.450000	1.18981e-05	0.450000	6.80204e-09	
+0.500000	5.97509e-06	0.500000	1.10166e-05	0.500000	1.06658e-05	0.500000	1.06658e-05	0.500000	1.10104e-05	0.500000	6.19772e-09	
+0.600000	5.41058e-06	0.600000	9.62252e-06	0.600000	9.26447e-06	0.600000	9.26447e-06	0.600000	9.61725e-06	0.600000	5.27419e-09	
+0.700000	4.95557e-06	0.700000	8.57125e-06	0.700000	8.22483e-06	0.700000	8.22483e-06	0.700000	8.56665e-06	0.700000	4.60003e-09	
+0.800000	4.57818e-06	0.800000	7.74546e-06	0.800000	7.42072e-06	0.800000	7.42072e-06	0.800000	7.74138e-06	0.800000	4.08514e-09	
+0.900000	4.25885e-06	0.900000	7.07708e-06	0.900000	6.77783e-06	0.900000	6.77783e-06	0.900000	7.0734e-06	0.900000	3.67836e-09	
+1.000000	3.98453e-06	1.000000	6.52351e-06	1.000000	6.2502e-06	1.000000	6.2502e-06	1.000000	6.52017e-06	1.000000	3.34846e-09	
+1.250000	3.44079e-06	1.250000	5.47765e-06	1.250000	5.2625e-06	1.250000	5.2625e-06	1.250000	5.47491e-06	1.250000	2.74305e-09	
+1.500000	3.03571e-06	1.500000	4.73847e-06	1.500000	4.56872e-06	1.500000	4.56872e-06	1.500000	4.73614e-06	1.500000	2.32965e-09	
+1.750000	2.72125e-06	1.750000	4.18577e-06	1.750000	4.05048e-06	1.750000	4.05048e-06	1.750000	4.18374e-06	1.750000	2.02856e-09	
+2.000000	2.46952e-06	2.000000	3.75556e-06	2.000000	3.64656e-06	2.000000	3.64656e-06	2.000000	3.75376e-06	2.000000	1.79903e-09	
+2.250000	2.26308e-06	2.250000	3.4104e-06	2.250000	3.32173e-06	2.250000	3.32173e-06	2.250000	3.40878e-06	2.250000	1.61799e-09	
+2.500000	2.08154e-06	2.500000	3.12686e-06	2.500000	3.05417e-06	2.500000	3.05417e-06	2.500000	3.12539e-06	2.500000	1.47137e-09	
+3.000000	1.81755e-06	3.000000	2.68758e-06	3.000000	2.63797e-06	3.000000	2.63797e-06	3.000000	2.68634e-06	3.000000	1.24802e-09	
+3.500000	1.6172e-06	3.500000	2.36211e-06	3.500000	2.32798e-06	3.500000	2.32798e-06	3.500000	2.36103e-06	3.500000	1.0856e-09	
+4.000000	1.45952e-06	4.000000	2.11062e-06	4.000000	2.08732e-06	4.000000	2.08732e-06	4.000000	2.10966e-06	4.000000	9.61917e-10	
+4.500000	1.33192e-06	4.500000	1.91007e-06	4.500000	1.89462e-06	4.500000	1.89462e-06	4.500000	1.9092e-06	4.500000	8.64463e-10	
+5.000000	1.22638e-06	5.000000	1.74615e-06	5.000000	1.73656e-06	5.000000	1.73656e-06	5.000000	1.74536e-06	5.000000	7.85605e-10	
+5.500000	1.13752e-06	5.500000	1.6095e-06	5.500000	1.60437e-06	5.500000	1.60437e-06	5.500000	1.60878e-06	5.500000	7.20426e-10	
+6.000000	1.06159e-06	6.000000	1.49373e-06	6.000000	1.49206e-06	6.000000	1.49206e-06	6.000000	1.49307e-06	6.000000	6.65613e-10	
+6.500000	9.95919e-07	6.500000	1.39431e-06	6.500000	1.39537e-06	6.500000	1.39537e-06	6.500000	1.39369e-06	6.500000	6.18846e-10	
+7.000000	9.3851e-07	7.000000	1.30795e-06	7.000000	1.31118e-06	7.000000	1.31118e-06	7.000000	1.30737e-06	7.000000	5.78455e-10	
+7.500000	8.87867e-07	7.500000	1.23219e-06	7.500000	1.23717e-06	7.500000	1.23717e-06	7.500000	1.23164e-06	7.500000	5.43204e-10	
+8.000000	8.42836e-07	8.000000	1.16515e-06	8.000000	1.17156e-06	8.000000	1.17156e-06	8.000000	1.16464e-06	8.000000	5.12159e-10	
+8.500000	8.02517e-07	8.500000	1.10539e-06	8.500000	1.11297e-06	8.500000	1.11297e-06	8.500000	1.1049e-06	8.500000	4.846e-10	
+9.000000	7.66192e-07	9.000000	1.05176e-06	9.000000	1.0603e-06	9.000000	1.0603e-06	9.000000	1.0513e-06	9.000000	4.59965e-10	
+9.500000	7.33284e-07	9.500000	1.00334e-06	9.500000	1.01269e-06	9.500000	1.01269e-06	9.500000	1.0029e-06	9.500000	4.37806e-10	
+10.000000	7.03323e-07	10.000000	8.72924e-07	10.000000	9.69413e-07	10.000000	9.69413e-07	10.000000	8.72506e-07	10.000000	4.17763e-10	
+11.000000	6.50761e-07	11.000000	8.13318e-07	11.000000	8.92521e-07	11.000000	8.92527e-07	11.000000	8.12935e-07	11.000000	3.82904e-10	
+12.000000	6.06123e-07	12.000000	7.61757e-07	12.000000	8.27477e-07	12.000000	8.27488e-07	12.000000	7.61404e-07	12.000000	3.53607e-10	
+13.000000	5.67712e-07	13.000000	7.16721e-07	13.000000	7.71727e-07	13.000000	7.71734e-07	13.000000	7.16392e-07	13.000000	3.28623e-10	
+14.000000	5.34288e-07	14.000000	6.77044e-07	14.000000	7.23399e-07	14.000000	7.23398e-07	14.000000	6.76737e-07	14.000000	3.07057e-10	
+15.000000	5.04923e-07	15.000000	6.4182e-07	15.000000	6.81085e-07	15.000000	6.81086e-07	15.000000	6.41531e-07	15.000000	2.88242e-10	
+16.000000	4.78907e-07	16.000000	6.10335e-07	16.000000	6.43742e-07	16.000000	6.43736e-07	16.000000	6.10063e-07	16.000000	2.7168e-10	
+17.000000	4.55689e-07	17.000000	5.82019e-07	17.000000	6.10549e-07	17.000000	6.10524e-07	17.000000	5.81762e-07	17.000000	2.56983e-10	
+18.000000	4.34831e-07	18.000000	5.56414e-07	18.000000	5.80836e-07	18.000000	5.80802e-07	18.000000	5.5617e-07	18.000000	2.43849e-10	
+19.000000	4.15986e-07	19.000000	5.33143e-07	19.000000	5.54084e-07	19.000000	5.54051e-07	19.000000	5.32911e-07	19.000000	2.3204e-10	
+20.000000	3.9887e-07	20.000000	5.119e-07	20.000000	5.29884e-07	20.000000	5.2985e-07	20.000000	5.11678e-07	20.000000	2.21362e-10	
+21.000000	3.83251e-07	21.000000	4.92426e-07	21.000000	5.07892e-07	21.000000	5.07856e-07	21.000000	4.92214e-07	21.000000	2.11657e-10	
+22.000000	3.68937e-07	22.000000	4.74507e-07	22.000000	4.87821e-07	22.000000	4.87786e-07	22.000000	4.74304e-07	22.000000	2.02798e-10	
+23.000000	3.55769e-07	23.000000	4.57962e-07	23.000000	4.69438e-07	23.000000	4.69402e-07	23.000000	4.57768e-07	23.000000	1.94676e-10	
+24.000000	3.43612e-07	24.000000	4.42637e-07	24.000000	4.52557e-07	24.000000	4.52507e-07	24.000000	4.4245e-07	24.000000	1.87204e-10	
+25.000000	3.32351e-07	25.000000	4.28401e-07	25.000000	4.37003e-07	25.000000	4.36931e-07	25.000000	4.2822e-07	25.000000	1.80303e-10	
+27.000000	3.12142e-07	27.000000	4.02753e-07	27.000000	4.09275e-07	27.000000	4.09184e-07	27.000000	4.02585e-07	27.000000	1.67974e-10	
+29.000000	2.94515e-07	29.000000	3.80282e-07	29.000000	3.85324e-07	29.000000	3.85234e-07	29.000000	3.80124e-07	29.000000	1.57277e-10	
+31.000000	2.78995e-07	31.000000	3.60424e-07	31.000000	3.64447e-07	31.000000	3.64357e-07	31.000000	3.60276e-07	31.000000	1.47905e-10	
+33.000000	2.65221e-07	33.000000	3.42744e-07	33.000000	3.45956e-07	33.000000	3.45871e-07	33.000000	3.42604e-07	33.000000	1.39623e-10	
+35.000000	2.52907e-07	35.000000	3.26897e-07	35.000000	3.29441e-07	35.000000	3.29365e-07	35.000000	3.26765e-07	35.000000	1.3225e-10	
+38.000000	2.36696e-07	38.000000	3.0598e-07	38.000000	3.07768e-07	38.000000	3.07666e-07	38.000000	3.05857e-07	38.000000	1.22589e-10	
+41.000000	2.22694e-07	41.000000	2.87863e-07	41.000000	2.89058e-07	41.000000	2.88953e-07	41.000000	2.87749e-07	41.000000	1.14286e-10	
+44.000000	2.10469e-07	44.000000	2.72015e-07	44.000000	2.72738e-07	44.000000	2.72642e-07	44.000000	2.71908e-07	44.000000	1.07072e-10	
+47.000000	1.99698e-07	47.000000	2.58029e-07	47.000000	2.58383e-07	47.000000	2.58291e-07	47.000000	2.57928e-07	47.000000	1.00743e-10	
+50.000000	1.90131e-07	50.000000	2.45591e-07	50.000000	2.4565e-07	50.000000	2.45564e-07	50.000000	2.45496e-07	50.000000	9.51438e-11	
+55.000000	1.76351e-07	55.000000	2.27655e-07	55.000000	2.27345e-07	55.000000	2.27267e-07	55.000000	2.27568e-07	55.000000	8.71184e-11	
+60.000000	1.64716e-07	60.000000	2.12498e-07	60.000000	2.11933e-07	60.000000	2.11855e-07	60.000000	2.12417e-07	60.000000	8.03807e-11	
+65.000000	1.54753e-07	65.000000	1.99513e-07	65.000000	1.9878e-07	65.000000	1.98688e-07	65.000000	1.99439e-07	65.000000	7.4641e-11	
+70.000000	1.46118e-07	70.000000	1.88261e-07	70.000000	1.87389e-07	70.000000	1.87305e-07	70.000000	1.88191e-07	70.000000	6.96907e-11	
+75.000000	1.38558e-07	75.000000	1.78412e-07	75.000000	1.77441e-07	75.000000	1.77362e-07	75.000000	1.78347e-07	75.000000	6.5376e-11	
+80.000000	1.3188e-07	80.000000	1.69717e-07	80.000000	1.68675e-07	80.000000	1.686e-07	80.000000	1.69656e-07	80.000000	6.15805e-11	
+85.000000	1.25934e-07	85.000000	1.61983e-07	85.000000	1.60889e-07	85.000000	1.60818e-07	85.000000	1.61924e-07	85.000000	5.82149e-11	
+90.000000	1.20605e-07	90.000000	1.55056e-07	90.000000	1.53927e-07	90.000000	1.53859e-07	90.000000	1.55001e-07	90.000000	5.52095e-11	
+95.000000	1.15798e-07	95.000000	1.48816e-07	95.000000	1.47678e-07	95.000000	1.47598e-07	95.000000	1.48763e-07	95.000000	5.25086e-11	
+100.000000	1.11439e-07	100.000000	1.43163e-07	100.000000	1.42011e-07	100.000000	1.41934e-07	100.000000	1.43113e-07	100.000000	5.00679e-11	
+105.000000	1.07467e-07	105.000000	1.38019e-07	105.000000	1.36859e-07	105.000000	1.36785e-07	105.000000	1.37972e-07	105.000000	4.78511e-11	
+110.000000	1.03831e-07	110.000000	1.33317e-07	110.000000	1.32154e-07	110.000000	1.32083e-07	110.000000	1.33271e-07	110.000000	4.58283e-11	
+115.000000	1.00489e-07	115.000000	1.29002e-07	115.000000	1.27841e-07	115.000000	1.27773e-07	115.000000	1.28958e-07	115.000000	4.3975e-11	
+120.000000	9.74057e-08	120.000000	1.25027e-07	120.000000	1.23873e-07	120.000000	1.23807e-07	120.000000	1.24985e-07	120.000000	4.22704e-11	
+125.000000	9.45521e-08	125.000000	1.21354e-07	125.000000	1.20208e-07	125.000000	1.20144e-07	125.000000	1.21314e-07	125.000000	4.06972e-11	
+130.000000	9.19025e-08	130.000000	1.17949e-07	130.000000	1.16815e-07	130.000000	1.16753e-07	130.000000	1.1791e-07	130.000000	3.92405e-11	
+135.000000	8.94353e-08	135.000000	1.14784e-07	135.000000	1.13661e-07	135.000000	1.13602e-07	135.000000	1.14746e-07	135.000000	3.78879e-11	
+140.000000	8.71318e-08	140.000000	1.11834e-07	140.000000	1.10731e-07	140.000000	1.10668e-07	140.000000	1.11797e-07	140.000000	3.66283e-11	
+145.000000	8.49757e-08	145.000000	1.09077e-07	145.000000	1.07998e-07	145.000000	1.07929e-07	145.000000	1.09042e-07	145.000000	3.54524e-11	
+150.000000	8.2953e-08	150.000000	1.06496e-07	150.000000	1.05432e-07	150.000000	1.05366e-07	150.000000	1.06462e-07	150.000000	3.4352e-11	
+155.000000	8.0105e-08	155.000000	1.04074e-07	155.000000	1.03026e-07	155.000000	1.02962e-07	155.000000	1.04041e-07	155.000000	3.33201e-11	
+160.000000	7.84358e-08	160.000000	1.01796e-07	160.000000	1.00767e-07	160.000000	1.00704e-07	160.000000	1.01764e-07	160.000000	3.23503e-11	
+165.000000	7.68616e-08	165.000000	9.96503e-08	165.000000	9.8639e-08	165.000000	9.85777e-08	165.000000	9.96189e-08	165.000000	3.14371e-11	
+170.000000	7.53746e-08	170.000000	9.76254e-08	170.000000	9.66325e-08	170.000000	9.65726e-08	170.000000	9.75948e-08	170.000000	3.05757e-11	
+175.000000	7.39676e-08	175.000000	9.57113e-08	175.000000	9.47372e-08	175.000000	9.46786e-08	175.000000	9.56815e-08	175.000000	2.97618e-11	
+180.000000	7.26341e-08	180.000000	9.38991e-08	180.000000	9.29439e-08	180.000000	9.28867e-08	180.000000	9.38702e-08	180.000000	2.89914e-11	
+185.000000	7.13686e-08	185.000000	9.2181e-08	185.000000	9.12451e-08	185.000000	9.11889e-08	185.000000	9.21528e-08	185.000000	2.82612e-11	
+190.000000	7.01659e-08	190.000000	9.05498e-08	190.000000	8.96332e-08	190.000000	8.9578e-08	190.000000	9.05223e-08	190.000000	2.7568e-11	
+195.000000	6.90213e-08	195.000000	8.89991e-08	195.000000	8.8101e-08	195.000000	8.80475e-08	195.000000	8.89722e-08	195.000000	2.69091e-11	
+200.000000	6.79308e-08	200.000000	8.7523e-08	200.000000	8.66437e-08	200.000000	8.65916e-08	200.000000	8.74967e-08	200.000000	2.6282e-11	
+210.000000	6.58969e-08	210.000000	8.47742e-08	210.000000	8.39411e-08	210.000000	8.3883e-08	210.000000	8.47491e-08	210.000000	2.51141e-11	
+220.000000	6.40381e-08	220.000000	8.2267e-08	220.000000	8.14732e-08	220.000000	8.14153e-08	220.000000	8.22429e-08	220.000000	2.40487e-11	
+230.000000	6.23324e-08	230.000000	7.99709e-08	230.000000	7.92138e-08	230.000000	7.91581e-08	230.000000	7.99478e-08	230.000000	2.30727e-11	
+240.000000	6.07616e-08	240.000000	7.78604e-08	240.000000	7.714e-08	240.000000	7.70859e-08	240.000000	7.78383e-08	240.000000	2.21752e-11	
+250.000000	5.93102e-08	250.000000	7.59142e-08	250.000000	7.52296e-08	250.000000	7.51771e-08	250.000000	7.58929e-08	250.000000	2.1347e-11	
+260.000000	5.7965e-08	260.000000	7.41139e-08	260.000000	7.34644e-08	260.000000	7.34133e-08	260.000000	7.40933e-08	260.000000	2.05803e-11	
+270.000000	5.67148e-08	270.000000	7.24438e-08	270.000000	7.18289e-08	270.000000	7.17789e-08	270.000000	7.24239e-08	270.000000	1.98684e-11	
+280.000000	5.55498e-08	280.000000	7.08904e-08	280.000000	7.03092e-08	280.000000	7.02605e-08	280.000000	7.08712e-08	280.000000	1.92056e-11	
+290.000000	5.44617e-08	290.000000	6.94422e-08	290.000000	6.88931e-08	290.000000	6.88463e-08	290.000000	6.94236e-08	290.000000	1.85869e-11	
+300.000000	5.34431e-08	300.000000	6.80889e-08	300.000000	6.75753e-08	300.000000	6.75262e-08	300.000000	6.80709e-08	300.000000	1.8008e-11	
+310.000000	5.24875e-08	310.000000	6.68216e-08	310.000000	6.63436e-08	310.000000	6.62913e-08	310.000000	6.68042e-08	310.000000	1.74652e-11	
+320.000000	5.15894e-08	320.000000	6.56326e-08	320.000000	6.5185e-08	320.000000	6.51338e-08	320.000000	6.56157e-08	320.000000	1.69551e-11	
+330.000000	5.07438e-08	330.000000	6.4515e-08	330.000000	6.40967e-08	330.000000	6.40469e-08	330.000000	6.44985e-08	330.000000	1.64749e-11	
+340.000000	4.99462e-08	340.000000	6.34627e-08	340.000000	6.30735e-08	340.000000	6.30244e-08	340.000000	6.34466e-08	340.000000	1.6022e-11	
+350.000000	4.91928e-08	350.000000	6.24702e-08	350.000000	6.21093e-08	350.000000	6.20611e-08	350.000000	6.24546e-08	350.000000	1.5594e-11	
+360.000000	4.84799e-08	360.000000	6.15327e-08	360.000000	6.11994e-08	360.000000	6.1152e-08	360.000000	6.15175e-08	360.000000	1.5189e-11	
+370.000000	4.78046e-08	370.000000	6.0646e-08	370.000000	6.03395e-08	370.000000	6.02929e-08	370.000000	6.06312e-08	370.000000	1.48052e-11	
+380.000000	4.71639e-08	380.000000	5.98061e-08	380.000000	5.95258e-08	380.000000	5.94799e-08	380.000000	5.97917e-08	380.000000	1.44409e-11	
+390.000000	4.65554e-08	390.000000	5.90096e-08	390.000000	5.87548e-08	390.000000	5.87096e-08	390.000000	5.89955e-08	390.000000	1.40946e-11	
+400.000000	4.59766e-08	400.000000	5.82533e-08	400.000000	5.80232e-08	400.000000	5.79787e-08	400.000000	5.82395e-08	400.000000	1.3765e-11	
+410.000000	4.54257e-08	410.000000	5.75343e-08	410.000000	5.73285e-08	410.000000	5.72846e-08	410.000000	5.75208e-08	410.000000	1.3451e-11	
+420.000000	4.49006e-08	420.000000	5.68501e-08	420.000000	5.66679e-08	420.000000	5.66245e-08	420.000000	5.68369e-08	420.000000	1.31514e-11	
+430.000000	4.43996e-08	430.000000	5.61983e-08	430.000000	5.6039e-08	430.000000	5.59962e-08	430.000000	5.61854e-08	430.000000	1.28652e-11	
+440.000000	4.39213e-08	440.000000	5.55767e-08	440.000000	5.54393e-08	440.000000	5.53975e-08	440.000000	5.55641e-08	440.000000	1.25916e-11	
+450.000000	4.34641e-08	450.000000	5.49835e-08	450.000000	5.48679e-08	450.000000	5.48265e-08	450.000000	5.49712e-08	450.000000	1.23298e-11	
+460.000000	4.30268e-08	460.000000	5.44168e-08	460.000000	5.4324e-08	460.000000	5.42815e-08	460.000000	5.44048e-08	460.000000	1.2079e-11	
+470.000000	4.26081e-08	470.000000	5.3875e-08	470.000000	5.38052e-08	470.000000	5.37607e-08	470.000000	5.38632e-08	470.000000	1.18384e-11	
+480.000000	4.22069e-08	480.000000	5.33566e-08	480.000000	5.33084e-08	480.000000	5.32627e-08	480.000000	5.3345e-08	480.000000	1.16076e-11	
+490.000000	4.18222e-08	490.000000	5.28602e-08	490.000000	5.28315e-08	490.000000	5.27862e-08	490.000000	5.28488e-08	490.000000	1.13859e-11	
+500.000000	4.14531e-08	500.000000	5.23844e-08	500.000000	5.23742e-08	500.000000	5.23298e-08	500.000000	5.23732e-08	500.000000	1.11727e-11	
+520.000000	4.07583e-08	520.000000	5.14904e-08	520.000000	5.15162e-08	520.000000	5.14728e-08	520.000000	5.14797e-08	520.000000	1.07701e-11	
+540.000000	4.01161e-08	540.000000	5.06662e-08	540.000000	5.07262e-08	540.000000	5.06835e-08	540.000000	5.06558e-08	540.000000	1.03964e-11	
+560.000000	3.95212e-08	560.000000	4.99044e-08	560.000000	4.99966e-08	560.000000	4.99547e-08	560.000000	4.98943e-08	560.000000	1.00485e-11	
+580.000000	3.89689e-08	580.000000	4.91988e-08	580.000000	4.93214e-08	580.000000	4.92801e-08	580.000000	4.91891e-08	580.000000	9.72379e-12	
+600.000000	3.84553e-08	600.000000	4.8544e-08	600.000000	4.8695e-08	600.000000	4.86544e-08	600.000000	4.85345e-08	600.000000	9.42001e-12	
+620.000000	3.79767e-08	620.000000	4.79351e-08	620.000000	4.81129e-08	620.000000	4.80729e-08	620.000000	4.79259e-08	620.000000	9.13519e-12	
+640.000000	3.753e-08	640.000000	4.73679e-08	640.000000	4.7571e-08	640.000000	4.75314e-08	640.000000	4.73591e-08	640.000000	8.86757e-12	
+660.000000	3.71125e-08	660.000000	4.68389e-08	660.000000	4.70652e-08	660.000000	4.70264e-08	660.000000	4.68303e-08	660.000000	8.61565e-12	
+680.000000	3.67218e-08	680.000000	4.63446e-08	680.000000	4.65925e-08	680.000000	4.65545e-08	680.000000	4.63362e-08	680.000000	8.37806e-12	
+700.000000	3.63556e-08	700.000000	4.58823e-08	700.000000	4.61513e-08	700.000000	4.6113e-08	700.000000	4.58741e-08	700.000000	8.1536e-12	
+720.000000	3.60121e-08	720.000000	4.54492e-08	720.000000	4.57392e-08	720.000000	4.56993e-08	720.000000	4.54413e-08	720.000000	7.9412e-12	
+740.000000	3.56895e-08	740.000000	4.50431e-08	740.000000	4.53524e-08	740.000000	4.53111e-08	740.000000	4.50354e-08	740.000000	7.7399e-12	
+760.000000	3.53862e-08	760.000000	4.4662e-08	760.000000	4.49876e-08	760.000000	4.49464e-08	760.000000	4.46544e-08	760.000000	7.54886e-12	
+780.000000	3.51008e-08	780.000000	4.43038e-08	780.000000	4.46439e-08	780.000000	4.46034e-08	780.000000	4.42965e-08	780.000000	7.36729e-12	
+800.000000	3.48321e-08	800.000000	4.39671e-08	800.000000	4.43204e-08	800.000000	4.42805e-08	800.000000	4.39599e-08	800.000000	7.1945e-12	
+820.000000	3.45789e-08	820.000000	4.36501e-08	820.000000	4.40156e-08	820.000000	4.39761e-08	820.000000	4.36431e-08	820.000000	7.02987e-12	
+840.000000	3.43402e-08	840.000000	4.33517e-08	840.000000	4.37282e-08	840.000000	4.36889e-08	840.000000	4.33448e-08	840.000000	6.87282e-12	
+860.000000	3.41149e-08	860.000000	4.30704e-08	860.000000	4.34567e-08	860.000000	4.34177e-08	860.000000	4.30637e-08	860.000000	6.72284e-12	
+880.000000	3.39024e-08	880.000000	4.28052e-08	880.000000	4.32e-08	880.000000	4.31613e-08	880.000000	4.27986e-08	880.000000	6.57946e-12	
+900.000000	3.37016e-08	900.000000	4.25549e-08	900.000000	4.29572e-08	900.000000	4.29189e-08	900.000000	4.25485e-08	900.000000	6.44224e-12	
+920.000000	3.3512e-08	920.000000	4.23188e-08	920.000000	4.27273e-08	920.000000	4.26893e-08	920.000000	4.23124e-08	920.000000	6.31079e-12	
+940.000000	3.33328e-08	940.000000	4.20958e-08	940.000000	4.25096e-08	940.000000	4.24718e-08	940.000000	4.20896e-08	940.000000	6.18476e-12	
+960.000000	3.31634e-08	960.000000	4.18851e-08	960.000000	4.23032e-08	960.000000	4.22657e-08	960.000000	4.18791e-08	960.000000	6.06381e-12	
+980.000000	3.30034e-08	980.000000	4.16861e-08	980.000000	4.21074e-08	980.000000	4.20701e-08	980.000000	4.16802e-08	980.000000	5.94763e-12	
+1000.000000	3.2852e-08	1000.000000	4.14981e-08	1000.000000	4.19216e-08	1000.000000	4.18845e-08	1000.000000	4.14922e-08	1000.000000	5.83596e-12	
+1020.000000	3.27089e-08	1020.000000	4.13203e-08	1020.000000	4.1745e-08	1020.000000	4.17082e-08	1020.000000	4.13146e-08	1020.000000	5.72852e-12	
+1040.000000	3.25737e-08	1040.000000	4.11523e-08	1040.000000	4.15773e-08	1040.000000	4.15407e-08	1040.000000	4.11467e-08	1040.000000	5.62508e-12	
+1060.000000	3.24458e-08	1060.000000	4.09935e-08	1060.000000	4.14178e-08	1060.000000	4.13815e-08	1060.000000	4.09879e-08	1060.000000	5.52541e-12	
+1080.000000	3.23249e-08	1080.000000	4.08433e-08	1080.000000	4.12662e-08	1080.000000	4.123e-08	1080.000000	4.08379e-08	1080.000000	5.42932e-12	
+1100.000000	3.22107e-08	1100.000000	4.07014e-08	1100.000000	4.11218e-08	1100.000000	4.10859e-08	1100.000000	4.06961e-08	1100.000000	5.33662e-12	
+1120.000000	3.21028e-08	1120.000000	4.05673e-08	1120.000000	4.09845e-08	1120.000000	4.09487e-08	1120.000000	4.05621e-08	1120.000000	5.24711e-12	
+1140.000000	3.20009e-08	1140.000000	4.04406e-08	1140.000000	4.08537e-08	1140.000000	4.0818e-08	1140.000000	4.04355e-08	1140.000000	5.16065e-12	
+1160.000000	3.19048e-08	1160.000000	4.03209e-08	1160.000000	4.07291e-08	1160.000000	4.06935e-08	1160.000000	4.03159e-08	1160.000000	5.07707e-12	
+1180.000000	3.1814e-08	1180.000000	4.02079e-08	1180.000000	4.06103e-08	1180.000000	4.05749e-08	1180.000000	4.02029e-08	1180.000000	4.99624e-12	
+1200.000000	3.17285e-08	1200.000000	4.01013e-08	1200.000000	4.0497e-08	1200.000000	4.04618e-08	1200.000000	4.00963e-08	1200.000000	4.91801e-12	
+1220.000000	3.16479e-08	1220.000000	4.00006e-08	1220.000000	4.03889e-08	1220.000000	4.0354e-08	1220.000000	3.99958e-08	1220.000000	4.84226e-12	
+1240.000000	3.1572e-08	1240.000000	3.99057e-08	1240.000000	4.02857e-08	1240.000000	4.02512e-08	1240.000000	3.9901e-08	1240.000000	4.76889e-12	
+1260.000000	3.15007e-08	1260.000000	3.98163e-08	1260.000000	4.01874e-08	1260.000000	4.0153e-08	1260.000000	3.98116e-08	1260.000000	4.69776e-12	
+1280.000000	3.14337e-08	1280.000000	3.97321e-08	1280.000000	4.00936e-08	1280.000000	4.00594e-08	1280.000000	3.97275e-08	1280.000000	4.62879e-12	
+1300.000000	3.13708e-08	1300.000000	3.96529e-08	1300.000000	4.00043e-08	1300.000000	3.99701e-08	1300.000000	3.96484e-08	1300.000000	4.56187e-12	
+1320.000000	3.13119e-08	1320.000000	3.95785e-08	1320.000000	3.99192e-08	1320.000000	3.98848e-08	1320.000000	3.9574e-08	1320.000000	4.49692e-12	
+1340.000000	3.12567e-08	1340.000000	3.95086e-08	1340.000000	3.98382e-08	1340.000000	3.98034e-08	1340.000000	3.95042e-08	1340.000000	4.43384e-12	
+1360.000000	3.12052e-08	1360.000000	3.94431e-08	1360.000000	3.97609e-08	1360.000000	3.97257e-08	1360.000000	3.94388e-08	1360.000000	4.37256e-12	
+1380.000000	3.11572e-08	1380.000000	3.93818e-08	1380.000000	3.96872e-08	1380.000000	3.96515e-08	1380.000000	3.93775e-08	1380.000000	4.313e-12	
+1400.000000	3.11126e-08	1400.000000	3.93245e-08	1400.000000	3.96168e-08	1400.000000	3.95806e-08	1400.000000	3.93202e-08	1400.000000	4.25509e-12	
+1420.000000	3.10712e-08	1420.000000	3.9271e-08	1420.000000	3.95495e-08	1420.000000	3.95129e-08	1420.000000	3.92668e-08	1420.000000	4.19875e-12	
+1440.000000	3.10329e-08	1440.000000	3.92211e-08	1440.000000	3.94852e-08	1440.000000	3.94483e-08	1440.000000	3.9217e-08	1440.000000	4.14393e-12	
+1460.000000	3.09975e-08	1460.000000	3.91748e-08	1460.000000	3.94236e-08	1460.000000	3.93866e-08	1460.000000	3.91707e-08	1460.000000	4.09057e-12	
+1480.000000	3.0965e-08	1480.000000	3.91319e-08	1480.000000	3.93647e-08	1480.000000	3.93277e-08	1480.000000	3.91278e-08	1480.000000	4.0386e-12	
+1500.000000	3.09353e-08	1500.000000	3.90922e-08	1500.000000	3.93084e-08	1500.000000	3.92714e-08	1500.000000	3.90882e-08	1500.000000	3.98798e-12	
+1520.000000	3.09083e-08	1520.000000	3.90557e-08	1520.000000	3.92545e-08	1520.000000	3.92177e-08	1520.000000	3.90517e-08	1520.000000	3.93864e-12	
+1540.000000	3.08838e-08	1540.000000	3.90221e-08	1540.000000	3.92031e-08	1540.000000	3.91664e-08	1540.000000	3.90182e-08	1540.000000	3.89055e-12	
+1560.000000	3.08618e-08	1560.000000	3.89914e-08	1560.000000	3.91539e-08	1560.000000	3.91174e-08	1560.000000	3.89876e-08	1560.000000	3.84365e-12	
+1580.000000	3.08422e-08	1580.000000	3.89636e-08	1580.000000	3.9107e-08	1580.000000	3.90706e-08	1580.000000	3.89598e-08	1580.000000	3.7979e-12	
+1600.000000	3.08248e-08	1600.000000	3.89384e-08	1600.000000	3.90622e-08	1600.000000	3.9026e-08	1600.000000	3.89346e-08	1600.000000	3.75325e-12	
+1620.000000	3.08098e-08	1620.000000	3.89157e-08	1620.000000	3.90195e-08	1620.000000	3.89835e-08	1620.000000	3.8912e-08	1620.000000	3.70968e-12	
+1640.000000	3.07968e-08	1640.000000	3.88956e-08	1640.000000	3.89788e-08	1640.000000	3.89429e-08	1640.000000	3.88919e-08	1640.000000	3.66713e-12	
+1660.000000	3.0786e-08	1660.000000	3.88779e-08	1660.000000	3.894e-08	1660.000000	3.89042e-08	1660.000000	3.88743e-08	1660.000000	3.62558e-12	
+1680.000000	3.07772e-08	1680.000000	3.88625e-08	1680.000000	3.8903e-08	1680.000000	3.88673e-08	1680.000000	3.88589e-08	1680.000000	3.58498e-12	
+1700.000000	3.07703e-08	1700.000000	3.88493e-08	1700.000000	3.88678e-08	1700.000000	3.88322e-08	1700.000000	3.88457e-08	1700.000000	3.54532e-12	
+1750.000000	3.07612e-08	1750.000000	3.88255e-08	1750.000000	3.87869e-08	1750.000000	3.87514e-08	1750.000000	3.88221e-08	1750.000000	3.44999e-12	
+1800.000000	3.07631e-08	1800.000000	3.88142e-08	1800.000000	3.87155e-08	1800.000000	3.86801e-08	1800.000000	3.88108e-08	1800.000000	3.35979e-12	
+1850.000000	3.0775e-08	1850.000000	3.88142e-08	1850.000000	3.86526e-08	1850.000000	3.86174e-08	1850.000000	3.88109e-08	1850.000000	3.27432e-12	
+1900.000000	3.07964e-08	1900.000000	3.88247e-08	1900.000000	3.85975e-08	1900.000000	3.85624e-08	1900.000000	3.88215e-08	1900.000000	3.1932e-12	
+1950.000000	3.08265e-08	1950.000000	3.88448e-08	1950.000000	3.85494e-08	1950.000000	3.85145e-08	1950.000000	3.88417e-08	1950.000000	3.11612e-12	
+2000.000000	3.08647e-08	2000.000000	3.8874e-08	2000.000000	3.85079e-08	2000.000000	3.84731e-08	2000.000000	3.88709e-08	2000.000000	3.04278e-12	
+2100.000000	3.09635e-08	2100.000000	3.89565e-08	2100.000000	3.84419e-08	2100.000000	3.84074e-08	2100.000000	3.89536e-08	2100.000000	2.90625e-12	
+2200.000000	3.10892e-08	2200.000000	3.90677e-08	2200.000000	3.83958e-08	2200.000000	3.83615e-08	2200.000000	3.90649e-08	2200.000000	2.78176e-12	
+2300.000000	3.12385e-08	2300.000000	3.92039e-08	2300.000000	3.83664e-08	2300.000000	3.83323e-08	2300.000000	3.92013e-08	2300.000000	2.66778e-12	
+2400.000000	3.1409e-08	2400.000000	3.9362e-08	2400.000000	3.8351e-08	2400.000000	3.83171e-08	2400.000000	3.93594e-08	2400.000000	2.56301e-12	
+2500.000000	3.15984e-08	2500.000000	3.95392e-08	2500.000000	3.83477e-08	2500.000000	3.83139e-08	2500.000000	3.95367e-08	2500.000000	2.46637e-12	
+2600.000000	3.18049e-08	2600.000000	3.97334e-08	2600.000000	3.83545e-08	2600.000000	3.83209e-08	2600.000000	3.9731e-08	2600.000000	2.37694e-12	
+2700.000000	3.20268e-08	2700.000000	3.99426e-08	2700.000000	3.837e-08	2700.000000	3.83365e-08	2700.000000	3.99404e-08	2700.000000	2.29394e-12	
+2800.000000	3.22629e-08	2800.000000	4.01653e-08	2800.000000	3.83929e-08	2800.000000	3.83596e-08	2800.000000	4.01631e-08	2800.000000	2.21669e-12	
+2900.000000	3.25118e-08	2900.000000	4.04e-08	2900.000000	3.84222e-08	2900.000000	3.8389e-08	2900.000000	4.03978e-08	2900.000000	2.14461e-12	
+3000.000000	3.27726e-08	3000.000000	4.06454e-08	3000.000000	3.8457e-08	3000.000000	3.84239e-08	3000.000000	4.06434e-08	3000.000000	2.07719e-12	
diff --git a/Inputs/EnergyLoss/proton_Mylar.txt b/Inputs/EnergyLoss/proton_Mylar.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b30bb39a5eea88d952ce7af5ba68b74b0519a9e2
--- /dev/null
+++ b/Inputs/EnergyLoss/proton_Mylar.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0277781	0.001000	0.0278096	0.001000	0.0360372	0.001000	0.0360372	0.001000	0.0242856	0.001000	0.00352399	
+0.002000	0.0337663	0.002000	0.0338494	0.002000	0.042053	0.002000	0.042053	0.002000	0.0312794	0.002000	0.00256992	
+0.005000	0.0448672	0.005000	0.0452735	0.005000	0.0527697	0.005000	0.0527697	0.005000	0.0437497	0.005000	0.00152385	
+0.008000	0.0523494	0.008000	0.0531139	0.008000	0.059818	0.008000	0.059818	0.008000	0.0519894	0.008000	0.00112449	
+0.010000	0.0563968	0.010000	0.0574005	0.010000	0.0635965	0.010000	0.0635965	0.010000	0.0564341	0.010000	0.000966385	
+0.015000	0.0680901	0.015000	0.0658123	0.015000	0.0712533	0.015000	0.0712533	0.015000	0.0650897	0.015000	0.0007226	
+0.020000	0.0776572	0.020000	0.0726043	0.020000	0.0773722	0.020000	0.0773722	0.020000	0.0720183	0.020000	0.000586014	
+0.025000	0.0855648	0.025000	0.0782735	0.025000	0.0825462	0.025000	0.0825462	0.025000	0.0777784	0.025000	0.000495026	
+0.030000	0.0920595	0.030000	0.0830855	0.030000	0.0862244	0.030000	0.0862244	0.030000	0.0826544	0.030000	0.000431177	
+0.035000	0.0973029	0.035000	0.0871986	0.035000	0.0892953	0.035000	0.0892953	0.035000	0.0868155	0.035000	0.000383099	
+0.040000	0.101422	0.040000	0.0907195	0.040000	0.091869	0.040000	0.091869	0.040000	0.090374	0.040000	0.000345459	
+0.045000	0.104529	0.045000	0.0937258	0.045000	0.0940242	0.045000	0.0940242	0.045000	0.0934107	0.045000	0.000315109	
+0.050000	0.106735	0.050000	0.0962772	0.050000	0.09582	0.050000	0.09582	0.050000	0.0959871	0.050000	0.000290066	
+0.055000	0.108146	0.055000	0.0984221	0.055000	0.0973029	0.055000	0.0973029	0.055000	0.0981531	0.055000	0.000269016	
+0.060000	0.108867	0.060000	0.100202	0.060000	0.0985109	0.060000	0.0985109	0.060000	0.0999505	0.060000	0.00025105	
+0.070000	0.108646	0.070000	0.102802	0.070000	0.100224	0.070000	0.100224	0.070000	0.10258	0.070000	0.000221945	
+0.080000	0.106812	0.080000	0.104323	0.080000	0.101162	0.080000	0.101162	0.080000	0.104124	0.080000	0.000199325	
+0.090000	0.103975	0.090000	0.104968	0.090000	0.101482	0.090000	0.101482	0.090000	0.104787	0.090000	0.000181195	
+0.100000	0.100596	0.100000	0.10491	0.100000	0.101308	0.100000	0.101308	0.100000	0.104744	0.100000	0.00016631	
+0.120000	0.0934043	0.120000	0.103258	0.120000	0.0998644	0.120000	0.0998644	0.120000	0.103115	0.120000	0.000143255	
+0.140000	0.086659	0.140000	0.100296	0.140000	0.0974413	0.140000	0.0974413	0.140000	0.10017	0.140000	0.00012617	
+0.160000	0.0808031	0.160000	0.0966571	0.160000	0.0944548	0.160000	0.0944548	0.160000	0.0965442	0.160000	0.000112961	
+0.180000	0.0758553	0.180000	0.092748	0.180000	0.0911858	0.180000	0.0911858	0.180000	0.0926456	0.180000	0.000102418	
+0.200000	0.0716922	0.200000	0.0888178	0.200000	0.0878205	0.200000	0.0878205	0.200000	0.088724	0.200000	9.37934e-05	
+0.250000	0.063786	0.250000	0.0796805	0.250000	0.0796671	0.250000	0.0796671	0.250000	0.0796027	0.250000	7.77745e-05	
+0.300000	0.0581486	0.300000	0.0719841	0.300000	0.0724419	0.300000	0.0724419	0.300000	0.0719174	0.300000	6.66776e-05	
+0.350000	0.0538198	0.350000	0.0656751	0.350000	0.0662944	0.350000	0.0662944	0.350000	0.0656166	0.350000	5.85042e-05	
+0.400000	0.0503094	0.400000	0.060499	0.400000	0.061123	0.400000	0.061123	0.400000	0.0604468	0.400000	5.22159e-05	
+0.450000	0.0473551	0.450000	0.0562049	0.450000	0.0567663	0.450000	0.0567663	0.450000	0.0561577	0.450000	4.72175e-05	
+0.500000	0.0448052	0.500000	0.0525915	0.500000	0.0530695	0.500000	0.0530695	0.500000	0.0525484	0.500000	4.31426e-05	
+0.600000	0.0405721	0.600000	0.0468377	0.600000	0.047162	0.600000	0.047162	0.600000	0.0468008	0.600000	3.68849e-05	
+0.700000	0.0371602	0.700000	0.0424318	0.700000	0.0426525	0.700000	0.0426525	0.700000	0.0423995	0.700000	3.22916e-05	
+0.800000	0.0343302	0.800000	0.0389209	0.800000	0.0390837	0.800000	0.0390837	0.800000	0.0388921	0.800000	2.87675e-05	
+0.900000	0.0319357	0.900000	0.0360373	0.900000	0.0361737	0.900000	0.0361737	0.900000	0.0360113	0.900000	2.59729e-05	
+1.000000	0.0298786	1.000000	0.0336136	1.000000	0.0337433	1.000000	0.0337433	1.000000	0.0335899	1.000000	2.3699e-05	
+1.250000	0.0258013	1.250000	0.0289237	1.250000	0.0290755	1.250000	0.0290755	1.250000	0.0289042	1.250000	1.95072e-05	
+1.500000	0.0227637	1.500000	0.0255007	1.500000	0.0256887	1.500000	0.0256887	1.500000	0.0254841	1.500000	1.66291e-05	
+1.750000	0.0204057	1.750000	0.0228707	1.750000	0.0230908	1.750000	0.0230908	1.750000	0.0228561	1.750000	1.45239e-05	
+2.000000	0.0185181	2.000000	0.0207763	2.000000	0.021021	2.000000	0.021021	2.000000	0.0207634	2.000000	1.29133e-05	
+2.250000	0.0169701	2.250000	0.0190635	2.250000	0.0193256	2.250000	0.0193256	2.250000	0.0190518	2.250000	1.16392e-05	
+2.500000	0.0156087	2.500000	0.0176333	2.500000	0.0179071	2.500000	0.0179071	2.500000	0.0176227	2.500000	1.06046e-05	
+3.000000	0.0136292	3.000000	0.015374	3.000000	0.015659	3.000000	0.015659	3.000000	0.015365	3.000000	9.02376e-06	
+3.500000	0.0121269	3.500000	0.0136636	3.500000	0.0139498	3.500000	0.0139498	3.500000	0.0136558	3.500000	7.86984e-06	
+4.000000	0.0109444	4.000000	0.0123196	4.000000	0.0126015	4.000000	0.0126015	4.000000	0.0123126	4.000000	6.98858e-06	
+4.500000	0.00998762	4.500000	0.011233	4.500000	0.0115079	4.500000	0.0115079	4.500000	0.0112268	4.500000	6.29242e-06	
+5.000000	0.00919619	5.000000	0.0103349	5.000000	0.0106013	5.000000	0.0106013	5.000000	0.0103292	5.000000	5.72786e-06	
+5.500000	0.00852985	5.500000	0.00957899	5.500000	0.00983646	5.500000	0.00983646	5.500000	0.00957373	5.500000	5.26034e-06	
+6.000000	0.00796053	6.000000	0.00893329	6.000000	0.00918168	6.000000	0.00918168	6.000000	0.00892843	6.000000	4.86649e-06	
+6.500000	0.00746806	6.500000	0.00837481	6.500000	0.00861426	6.500000	0.00861426	6.500000	0.00837028	6.500000	4.52995e-06	
+7.000000	0.00703756	7.000000	0.0078866	7.000000	0.00811743	7.000000	0.00811743	7.000000	0.00788236	7.000000	4.23888e-06	
+7.500000	0.00665781	7.500000	0.00745589	7.500000	0.00767846	7.500000	0.00767846	7.500000	0.0074519	7.500000	3.98452e-06	
+8.000000	0.00632014	8.000000	0.00707286	8.000000	0.00728758	8.000000	0.00728758	8.000000	0.0070691	8.000000	3.76025e-06	
+8.500000	0.0060178	8.500000	0.00672984	8.500000	0.00693711	8.500000	0.00693711	8.500000	0.00672628	8.500000	3.56095e-06	
+9.000000	0.00574541	9.000000	0.00642073	9.000000	0.00662096	9.000000	0.00662096	9.000000	0.00641734	9.000000	3.38262e-06	
+9.500000	0.00549864	9.500000	0.00614062	9.500000	0.0063342	9.500000	0.0063342	9.500000	0.0061374	9.500000	3.22206e-06	
+10.000000	0.00527398	10.000000	0.00606562	10.000000	0.00607282	10.000000	0.00607282	10.000000	0.00606255	10.000000	3.0767e-06	
+11.000000	0.00487984	11.000000	0.00561676	11.000000	0.00560873	11.000000	0.00560878	11.000000	0.00561394	11.000000	2.82359e-06	
+12.000000	0.00454511	12.000000	0.00523417	12.000000	0.00521474	12.000000	0.00521484	12.000000	0.00523156	12.000000	2.61055e-06	
+13.000000	0.00425708	13.000000	0.00490401	13.000000	0.00487612	13.000000	0.00487618	13.000000	0.00490158	13.000000	2.42864e-06	
+14.000000	0.00400644	14.000000	0.00461604	14.000000	0.00458191	14.000000	0.00458191	14.000000	0.00461377	14.000000	2.27141e-06	
+15.000000	0.00378625	15.000000	0.00436258	15.000000	0.00432383	15.000000	0.00432384	15.000000	0.00436044	15.000000	2.13411e-06	
+16.000000	0.00359116	16.000000	0.00413767	16.000000	0.00409575	16.000000	0.0040957	16.000000	0.00413566	16.000000	2.01311e-06	
+17.000000	0.00341705	17.000000	0.0039367	17.000000	0.0038928	17.000000	0.0038926	17.000000	0.00393479	17.000000	1.90563e-06	
+18.000000	0.00326065	18.000000	0.00375597	18.000000	0.00371094	18.000000	0.00371068	18.000000	0.00375416	18.000000	1.80951e-06	
+19.000000	0.00311934	19.000000	0.00359254	19.000000	0.00354708	19.000000	0.00354682	19.000000	0.00359081	19.000000	1.72301e-06	
+20.000000	0.00299099	20.000000	0.00344399	20.000000	0.00339877	20.000000	0.0033985	20.000000	0.00344234	20.000000	1.64473e-06	
+21.000000	0.00287386	21.000000	0.00330836	21.000000	0.00326395	21.000000	0.00326366	21.000000	0.00330678	21.000000	1.57354e-06	
+22.000000	0.00276653	22.000000	0.003184	22.000000	0.00314087	22.000000	0.00314059	22.000000	0.00318249	22.000000	1.50851e-06	
+23.000000	0.00266779	23.000000	0.00306955	23.000000	0.00302814	23.000000	0.00302786	23.000000	0.0030681	23.000000	1.44885e-06	
+24.000000	0.00257663	24.000000	0.00296385	24.000000	0.00292464	24.000000	0.00292425	24.000000	0.00296246	24.000000	1.39393e-06	
+25.000000	0.00249218	25.000000	0.00286592	25.000000	0.00282931	25.000000	0.00282874	25.000000	0.00286458	25.000000	1.34318e-06	
+27.000000	0.00234065	27.000000	0.00269013	27.000000	0.00265939	27.000000	0.00265868	27.000000	0.00268888	27.000000	1.25244e-06	
+29.000000	0.00220846	29.000000	0.00253677	29.000000	0.00251271	29.000000	0.00251201	29.000000	0.00253559	29.000000	1.17363e-06	
+31.000000	0.00209209	31.000000	0.00240174	31.000000	0.00238273	31.000000	0.00238202	31.000000	0.00240063	31.000000	1.10451e-06	
+33.000000	0.0019888	33.000000	0.0022819	33.000000	0.00226527	33.000000	0.0022646	33.000000	0.00228085	33.000000	1.04339e-06	
+35.000000	0.00189646	35.000000	0.00217479	35.000000	0.00216014	35.000000	0.00215955	35.000000	0.0021738	35.000000	9.88927e-07	
+38.000000	0.00177491	38.000000	0.00203382	38.000000	0.00202192	38.000000	0.00202112	38.000000	0.00203291	38.000000	9.17497e-07	
+41.000000	0.00166991	41.000000	0.00191213	41.000000	0.00190226	41.000000	0.00190144	41.000000	0.00191128	41.000000	8.56052e-07	
+44.000000	0.00157824	44.000000	0.00180596	44.000000	0.00179763	44.000000	0.00179688	44.000000	0.00180516	44.000000	8.02611e-07	
+47.000000	0.00149747	47.000000	0.00171249	47.000000	0.00170541	47.000000	0.0017047	47.000000	0.00171173	47.000000	7.55688e-07	
+50.000000	0.00142573	50.000000	0.00162953	50.000000	0.00162346	50.000000	0.00162279	50.000000	0.00162882	50.000000	7.14146e-07	
+55.000000	0.0013224	55.000000	0.00151019	55.000000	0.0015054	55.000000	0.00150478	55.000000	0.00150953	55.000000	6.54543e-07	
+60.000000	0.00123515	60.000000	0.00140959	60.000000	0.00140574	60.000000	0.00140513	60.000000	0.00140898	60.000000	6.04449e-07	
+65.000000	0.00116044	65.000000	0.00132359	65.000000	0.00132053	65.000000	0.00131981	65.000000	0.00132303	65.000000	5.61733e-07	
+70.000000	0.00109569	70.000000	0.0012492	70.000000	0.00124656	70.000000	0.0012459	70.000000	0.00124867	70.000000	5.24859e-07	
+75.000000	0.001039	75.000000	0.00118419	75.000000	0.00118185	75.000000	0.00118123	75.000000	0.0011837	75.000000	4.92692e-07	
+80.000000	0.000988921	80.000000	0.00112687	80.000000	0.00112474	80.000000	0.00112415	80.000000	0.00112641	80.000000	4.64375e-07	
+85.000000	0.000944337	85.000000	0.00107594	85.000000	0.00107393	85.000000	0.00107338	85.000000	0.0010755	85.000000	4.39248e-07	
+90.000000	0.000904373	90.000000	0.00103038	90.000000	0.00102845	90.000000	0.00102791	90.000000	0.00102997	90.000000	4.16795e-07	
+95.000000	0.000868329	95.000000	0.000989376	95.000000	0.000987595	95.000000	0.000986961	95.000000	0.000988979	95.000000	3.96605e-07	
+100.000000	0.000835643	100.000000	0.000952265	100.000000	0.000950478	100.000000	0.000949872	100.000000	0.000951886	100.000000	3.7835e-07	
+105.000000	0.000805856	105.000000	0.000918515	105.000000	0.000916699	105.000000	0.000916119	105.000000	0.000918153	105.000000	3.61759e-07	
+110.000000	0.00077859	110.000000	0.000887685	110.000000	0.000885827	110.000000	0.000885269	110.000000	0.000887339	110.000000	3.46614e-07	
+115.000000	0.00075353	115.000000	0.00085941	115.000000	0.000857496	115.000000	0.000856959	115.000000	0.000859077	115.000000	3.3273e-07	
+120.000000	0.000730412	120.000000	0.00083338	120.000000	0.000831404	120.000000	0.000830886	120.000000	0.00083306	120.000000	3.19955e-07	
+125.000000	0.000709014	125.000000	0.000809338	125.000000	0.000807295	125.000000	0.000806793	125.000000	0.00080903	125.000000	3.08159e-07	
+130.000000	0.000689146	130.000000	0.000787061	130.000000	0.000784948	130.000000	0.000784462	130.000000	0.000786764	130.000000	2.97233e-07	
+135.000000	0.000670645	135.000000	0.000766361	135.000000	0.000764166	135.000000	0.000763705	135.000000	0.000766074	135.000000	2.87083e-07	
+140.000000	0.000653371	140.000000	0.000747076	140.000000	0.000744855	140.000000	0.00074436	140.000000	0.000746798	140.000000	2.77627e-07	
+145.000000	0.000637204	145.000000	0.000729063	145.000000	0.000726828	145.000000	0.000726289	145.000000	0.000728794	145.000000	2.68797e-07	
+150.000000	0.000622036	150.000000	0.000712201	150.000000	0.000709891	150.000000	0.000709368	150.000000	0.00071194	150.000000	2.6053e-07	
+155.000000	0.00060068	155.000000	0.000696381	155.000000	0.000693995	155.000000	0.000693492	155.000000	0.000696128	155.000000	2.52776e-07	
+160.000000	0.000588163	160.000000	0.00068151	160.000000	0.000679059	160.000000	0.000678565	160.000000	0.000681265	160.000000	2.45485e-07	
+165.000000	0.000576359	165.000000	0.000667505	165.000000	0.000664988	165.000000	0.000664506	165.000000	0.000667266	165.000000	2.38619e-07	
+170.000000	0.000565208	170.000000	0.000654291	170.000000	0.000651711	170.000000	0.000651241	170.000000	0.000654059	170.000000	2.3214e-07	
+175.000000	0.000554657	175.000000	0.000641804	175.000000	0.000639164	175.000000	0.000638705	175.000000	0.000641578	175.000000	2.26016e-07	
+180.000000	0.000544659	180.000000	0.000629984	180.000000	0.000627288	180.000000	0.000626838	180.000000	0.000629764	180.000000	2.20218e-07	
+185.000000	0.000535169	185.000000	0.00061878	185.000000	0.000616031	185.000000	0.00061559	185.000000	0.000618565	185.000000	2.14721e-07	
+190.000000	0.00052615	190.000000	0.000608144	190.000000	0.000605347	190.000000	0.000604913	190.000000	0.000607934	190.000000	2.09501e-07	
+195.000000	0.000517567	195.000000	0.000598034	195.000000	0.000595185	195.000000	0.000594765	195.000000	0.00059783	195.000000	2.04538e-07	
+200.000000	0.00050939	200.000000	0.000588413	200.000000	0.000585517	200.000000	0.000585108	200.000000	0.000588213	200.000000	1.99813e-07	
+210.000000	0.000494138	210.000000	0.0005705	210.000000	0.000567587	210.000000	0.00056713	210.000000	0.000570309	210.000000	1.91011e-07	
+220.000000	0.0004802	220.000000	0.000554165	220.000000	0.000551196	220.000000	0.000550741	220.000000	0.000553982	220.000000	1.82978e-07	
+230.000000	0.000467409	230.000000	0.000539209	230.000000	0.000536177	230.000000	0.00053574	230.000000	0.000539034	230.000000	1.75616e-07	
+240.000000	0.00045563	240.000000	0.000525465	240.000000	0.000522384	240.000000	0.000521959	240.000000	0.000525296	240.000000	1.68843e-07	
+250.000000	0.000444747	250.000000	0.000512792	250.000000	0.000509671	250.000000	0.000509258	250.000000	0.000512629	250.000000	1.6259e-07	
+260.000000	0.00043466	260.000000	0.00050107	260.000000	0.000497917	260.000000	0.000497515	260.000000	0.000500913	260.000000	1.568e-07	
+270.000000	0.000425285	270.000000	0.000490197	270.000000	0.000487021	270.000000	0.000486629	270.000000	0.000490046	270.000000	1.51422e-07	
+280.000000	0.000416549	280.000000	0.000480085	280.000000	0.000476892	280.000000	0.00047651	280.000000	0.000479939	280.000000	1.46412e-07	
+290.000000	0.00040839	290.000000	0.000470658	290.000000	0.000467448	290.000000	0.000467081	290.000000	0.000470516	290.000000	1.41735e-07	
+300.000000	0.000400751	300.000000	0.000461849	300.000000	0.000458661	300.000000	0.000458275	300.000000	0.000461712	300.000000	1.37357e-07	
+310.000000	0.000393586	310.000000	0.000453601	310.000000	0.000450446	310.000000	0.000450034	310.000000	0.000453467	310.000000	1.33251e-07	
+320.000000	0.000386852	320.000000	0.000445861	320.000000	0.00044271	320.000000	0.000442307	320.000000	0.000445732	320.000000	1.29392e-07	
+330.000000	0.000380511	330.000000	0.000438586	330.000000	0.00043544	330.000000	0.000435049	330.000000	0.00043846	330.000000	1.25757e-07	
+340.000000	0.00037453	340.000000	0.000431736	340.000000	0.000428604	340.000000	0.000428218	340.000000	0.000431614	340.000000	1.22328e-07	
+350.000000	0.00036888	350.000000	0.000425275	350.000000	0.000422159	350.000000	0.00042178	350.000000	0.000425156	350.000000	1.19087e-07	
+360.000000	0.000363534	360.000000	0.000419172	360.000000	0.000416075	360.000000	0.000415703	360.000000	0.000419056	360.000000	1.16019e-07	
+370.000000	0.00035847	370.000000	0.000413399	370.000000	0.000410293	370.000000	0.000409927	370.000000	0.000413286	370.000000	1.13111e-07	
+380.000000	0.000353666	380.000000	0.00040793	380.000000	0.00040482	380.000000	0.000404459	380.000000	0.00040782	380.000000	1.1035e-07	
+390.000000	0.000349103	390.000000	0.000402743	390.000000	0.000399631	390.000000	0.000399276	390.000000	0.000402636	390.000000	1.07725e-07	
+400.000000	0.000344763	400.000000	0.000397818	400.000000	0.000394707	400.000000	0.000394358	400.000000	0.000397712	400.000000	1.05226e-07	
+410.000000	0.000340632	410.000000	0.000393135	410.000000	0.000390029	410.000000	0.000389684	410.000000	0.000393032	410.000000	1.02844e-07	
+420.000000	0.000336694	420.000000	0.000388678	420.000000	0.00038558	420.000000	0.000385239	420.000000	0.000388577	420.000000	1.00572e-07	
+430.000000	0.000332938	430.000000	0.000384431	430.000000	0.000381343	430.000000	0.000381007	430.000000	0.000384333	430.000000	9.84007e-08	
+440.000000	0.000329351	440.000000	0.000380381	440.000000	0.000377301	440.000000	0.000376973	440.000000	0.000380285	440.000000	9.63247e-08	
+450.000000	0.000325922	450.000000	0.000376515	450.000000	0.000373449	450.000000	0.000373124	450.000000	0.000376421	450.000000	9.43375e-08	
+460.000000	0.000322643	460.000000	0.000372821	460.000000	0.000369783	460.000000	0.000369449	460.000000	0.000372729	460.000000	9.24333e-08	
+470.000000	0.000319503	470.000000	0.000369289	470.000000	0.000366287	470.000000	0.000365938	470.000000	0.000369198	470.000000	9.06071e-08	
+480.000000	0.000316495	480.000000	0.000365908	480.000000	0.000362937	480.000000	0.000362579	480.000000	0.000365819	480.000000	8.88541e-08	
+490.000000	0.000313611	490.000000	0.00036267	490.000000	0.000359719	490.000000	0.000359363	490.000000	0.000362583	490.000000	8.71699e-08	
+500.000000	0.000310843	500.000000	0.000359567	500.000000	0.000356632	500.000000	0.000356283	500.000000	0.000359481	500.000000	8.55505e-08	
+520.000000	0.000305632	520.000000	0.000353733	520.000000	0.000350839	520.000000	0.000350498	520.000000	0.00035365	520.000000	8.24917e-08	
+540.000000	0.000300817	540.000000	0.000348351	540.000000	0.000345503	540.000000	0.000345167	540.000000	0.000348272	540.000000	7.96509e-08	
+560.000000	0.000296356	560.000000	0.000343375	560.000000	0.000340572	560.000000	0.000340243	560.000000	0.000343298	560.000000	7.70056e-08	
+580.000000	0.000292215	580.000000	0.000338764	580.000000	0.000336007	580.000000	0.000335683	580.000000	0.000338689	580.000000	7.4536e-08	
+600.000000	0.000288363	600.000000	0.000334481	600.000000	0.000331771	600.000000	0.000331452	600.000000	0.000334409	600.000000	7.22249e-08	
+620.000000	0.000284774	620.000000	0.000330496	620.000000	0.000327833	620.000000	0.000327518	620.000000	0.000330426	620.000000	7.00574e-08	
+640.000000	0.000281425	640.000000	0.000326783	640.000000	0.000324165	640.000000	0.000323854	640.000000	0.000326715	640.000000	6.80204e-08	
+660.000000	0.000278294	660.000000	0.000323316	660.000000	0.00032074	660.000000	0.000320435	660.000000	0.00032325	660.000000	6.61023e-08	
+680.000000	0.000275364	680.000000	0.000320074	680.000000	0.000317538	680.000000	0.00031724	680.000000	0.00032001	680.000000	6.42928e-08	
+700.000000	0.000272618	700.000000	0.00031704	700.000000	0.00031455	700.000000	0.000314249	700.000000	0.000316977	700.000000	6.2583e-08	
+720.000000	0.000270042	720.000000	0.000314195	720.000000	0.000311759	720.000000	0.000311446	720.000000	0.000314134	720.000000	6.09647e-08	
+740.000000	0.000267623	740.000000	0.000311525	740.000000	0.000309139	740.000000	0.000308814	740.000000	0.000311465	740.000000	5.94307e-08	
+760.000000	0.000265349	760.000000	0.000309016	760.000000	0.000306665	760.000000	0.000306341	760.000000	0.000308958	760.000000	5.79744e-08	
+780.000000	0.000263209	780.000000	0.000306657	780.000000	0.000304333	780.000000	0.000304015	780.000000	0.000306601	780.000000	5.65901e-08	
+800.000000	0.000261194	800.000000	0.000304437	800.000000	0.000302136	800.000000	0.000301823	800.000000	0.000304381	800.000000	5.52725e-08	
+820.000000	0.000259295	820.000000	0.000302344	820.000000	0.000300068	820.000000	0.000299757	820.000000	0.00030229	820.000000	5.40168e-08	
+840.000000	0.000257505	840.000000	0.000300372	840.000000	0.000298115	840.000000	0.000297807	840.000000	0.000300319	840.000000	5.28188e-08	
+860.000000	0.000255816	860.000000	0.00029851	860.000000	0.000296271	860.000000	0.000295964	860.000000	0.000298459	860.000000	5.16744e-08	
+880.000000	0.000254222	880.000000	0.000296753	880.000000	0.000294526	880.000000	0.000294223	880.000000	0.000296703	880.000000	5.05802e-08	
+900.000000	0.000252717	900.000000	0.000295093	900.000000	0.000292875	900.000000	0.000292574	900.000000	0.000295044	900.000000	4.95328e-08	
+920.000000	0.000251295	920.000000	0.000293524	920.000000	0.000291312	920.000000	0.000291013	920.000000	0.000293475	920.000000	4.85294e-08	
+940.000000	0.000249951	940.000000	0.00029204	940.000000	0.000289831	940.000000	0.000289534	940.000000	0.000291993	940.000000	4.7567e-08	
+960.000000	0.000248681	960.000000	0.000290637	960.000000	0.000288426	960.000000	0.000288131	960.000000	0.00029059	960.000000	4.66434e-08	
+980.000000	0.000247481	980.000000	0.000289308	980.000000	0.000287093	980.000000	0.0002868	980.000000	0.000289262	980.000000	4.57561e-08	
+1000.000000	0.000246346	1000.000000	0.000288051	1000.000000	0.000285827	1000.000000	0.000285536	1000.000000	0.000288006	1000.000000	4.49029e-08	
+1020.000000	0.000245273	1020.000000	0.00028686	1020.000000	0.000284624	1020.000000	0.000284335	1020.000000	0.000286816	1020.000000	4.40821e-08	
+1040.000000	0.000244259	1040.000000	0.000285732	1040.000000	0.00028348	1040.000000	0.000283193	1040.000000	0.000285689	1040.000000	4.32917e-08	
+1060.000000	0.0002433	1060.000000	0.000284664	1060.000000	0.000282392	1060.000000	0.000282107	1060.000000	0.000284622	1060.000000	4.253e-08	
+1080.000000	0.000242394	1080.000000	0.000283653	1080.000000	0.000281357	1080.000000	0.000281073	1080.000000	0.000283611	1080.000000	4.17955e-08	
+1100.000000	0.000241537	1100.000000	0.000282694	1100.000000	0.000280372	1100.000000	0.00028009	1100.000000	0.000282653	1100.000000	4.10868e-08	
+1120.000000	0.000240728	1120.000000	0.000281786	1120.000000	0.000279434	1120.000000	0.000279153	1120.000000	0.000281746	1120.000000	4.04025e-08	
+1140.000000	0.000239964	1140.000000	0.000280926	1140.000000	0.00027854	1140.000000	0.00027826	1140.000000	0.000280886	1140.000000	3.97414e-08	
+1160.000000	0.000239243	1160.000000	0.000280111	1160.000000	0.000277688	1160.000000	0.000277409	1160.000000	0.000280072	1160.000000	3.91022e-08	
+1180.000000	0.000238563	1180.000000	0.00027934	1180.000000	0.000276875	1180.000000	0.000276598	1180.000000	0.000279301	1180.000000	3.84839e-08	
+1200.000000	0.000237921	1200.000000	0.000278609	1200.000000	0.0002761	1200.000000	0.000275824	1200.000000	0.000278571	1200.000000	3.78855e-08	
+1220.000000	0.000237317	1220.000000	0.000277918	1220.000000	0.000275359	1220.000000	0.000275085	1220.000000	0.000277881	1220.000000	3.7306e-08	
+1240.000000	0.000236748	1240.000000	0.000277264	1240.000000	0.000274652	1240.000000	0.000274381	1240.000000	0.000277227	1240.000000	3.67446e-08	
+1260.000000	0.000236213	1260.000000	0.000276645	1260.000000	0.000273978	1260.000000	0.000273708	1260.000000	0.000276609	1260.000000	3.62003e-08	
+1280.000000	0.00023571	1280.000000	0.00027606	1280.000000	0.000273334	1280.000000	0.000273066	1280.000000	0.000276025	1280.000000	3.56724e-08	
+1300.000000	0.000235239	1300.000000	0.000275508	1300.000000	0.000272721	1300.000000	0.000272453	1300.000000	0.000275473	1300.000000	3.51602e-08	
+1320.000000	0.000234797	1320.000000	0.000274986	1320.000000	0.000272137	1320.000000	0.000271867	1320.000000	0.000274952	1320.000000	3.4663e-08	
+1340.000000	0.000234384	1340.000000	0.000274494	1340.000000	0.00027158	1340.000000	0.000271307	1340.000000	0.00027446	1340.000000	3.41801e-08	
+1360.000000	0.000233997	1360.000000	0.00027403	1360.000000	0.000271049	1360.000000	0.000270772	1360.000000	0.000273997	1360.000000	3.37109e-08	
+1380.000000	0.000233638	1380.000000	0.000273594	1380.000000	0.000270542	1380.000000	0.000270261	1380.000000	0.00027356	1380.000000	3.32548e-08	
+1400.000000	0.000233303	1400.000000	0.000273183	1400.000000	0.000270057	1400.000000	0.000269773	1400.000000	0.00027315	1400.000000	3.28113e-08	
+1420.000000	0.000232992	1420.000000	0.000272797	1420.000000	0.000269594	1420.000000	0.000269306	1420.000000	0.000272764	1420.000000	3.23798e-08	
+1440.000000	0.000232705	1440.000000	0.000272434	1440.000000	0.00026915	1440.000000	0.00026886	1440.000000	0.000272402	1440.000000	3.19599e-08	
+1460.000000	0.00023244	1460.000000	0.000272095	1460.000000	0.000268725	1460.000000	0.000268434	1460.000000	0.000272063	1460.000000	3.15511e-08	
+1480.000000	0.000232196	1480.000000	0.000271777	1480.000000	0.000268317	1480.000000	0.000268026	1480.000000	0.000271746	1480.000000	3.11529e-08	
+1500.000000	0.000231973	1500.000000	0.000271481	1500.000000	0.000267927	1500.000000	0.000267636	1500.000000	0.00027145	1500.000000	3.0765e-08	
+1520.000000	0.000231771	1520.000000	0.000271204	1520.000000	0.000267554	1520.000000	0.000267264	1520.000000	0.000271174	1520.000000	3.0387e-08	
+1540.000000	0.000231587	1540.000000	0.000270947	1540.000000	0.000267196	1540.000000	0.000266908	1540.000000	0.000270917	1540.000000	3.00184e-08	
+1560.000000	0.000231422	1560.000000	0.000270709	1560.000000	0.000266855	1560.000000	0.000266568	1560.000000	0.00027068	1560.000000	2.96589e-08	
+1580.000000	0.000231275	1580.000000	0.000270489	1580.000000	0.000266528	1580.000000	0.000266243	1580.000000	0.00027046	1580.000000	2.93083e-08	
+1600.000000	0.000231145	1600.000000	0.000270286	1600.000000	0.000266216	1600.000000	0.000265932	1600.000000	0.000270257	1600.000000	2.8966e-08	
+1620.000000	0.000231032	1620.000000	0.0002701	1620.000000	0.000265918	1620.000000	0.000265635	1620.000000	0.000270072	1620.000000	2.8632e-08	
+1640.000000	0.000230935	1640.000000	0.00026993	1640.000000	0.000265633	1640.000000	0.000265351	1640.000000	0.000269902	1640.000000	2.83058e-08	
+1660.000000	0.000230854	1660.000000	0.000269776	1660.000000	0.000265362	1660.000000	0.000265081	1660.000000	0.000269748	1660.000000	2.79872e-08	
+1680.000000	0.000230787	1680.000000	0.000269636	1680.000000	0.000265103	1680.000000	0.000264822	1680.000000	0.000269609	1680.000000	2.76759e-08	
+1700.000000	0.000230736	1700.000000	0.000269511	1700.000000	0.000264855	1700.000000	0.000264575	1700.000000	0.000269484	1700.000000	2.73716e-08	
+1750.000000	0.000230668	1750.000000	0.000269259	1750.000000	0.000264285	1750.000000	0.000264007	1750.000000	0.000269232	1750.000000	2.66404e-08	
+1800.000000	0.000230682	1800.000000	0.000269086	1800.000000	0.00026378	1800.000000	0.000263502	1800.000000	0.00026906	1800.000000	2.59485e-08	
+1850.000000	0.000230771	1850.000000	0.000268988	1850.000000	0.000263332	1850.000000	0.000263055	1850.000000	0.000268962	1850.000000	2.52926e-08	
+1900.000000	0.000230931	1900.000000	0.000268957	1900.000000	0.000262936	1900.000000	0.00026266	1900.000000	0.000268932	1900.000000	2.46701e-08	
+1950.000000	0.000231157	1950.000000	0.000268988	1950.000000	0.000262588	1950.000000	0.000262314	1950.000000	0.000268964	1950.000000	2.40784e-08	
+2000.000000	0.000231444	2000.000000	0.000269078	2000.000000	0.000262284	2000.000000	0.000262011	2000.000000	0.000269055	2000.000000	2.35153e-08	
+2100.000000	0.000232185	2100.000000	0.000269415	2100.000000	0.000261793	2100.000000	0.000261522	2100.000000	0.000269393	2100.000000	2.24669e-08	
+2200.000000	0.000233127	2200.000000	0.000269938	2200.000000	0.000261435	2200.000000	0.000261166	2200.000000	0.000269917	2200.000000	2.15105e-08	
+2300.000000	0.000234247	2300.000000	0.000270623	2300.000000	0.000261191	2300.000000	0.000260923	2300.000000	0.000270603	2300.000000	2.06346e-08	
+2400.000000	0.000235525	2400.000000	0.00027145	2400.000000	0.000261042	2400.000000	0.000260775	2400.000000	0.00027143	2400.000000	1.98293e-08	
+2500.000000	0.000236946	2500.000000	0.000272401	2500.000000	0.000260973	2500.000000	0.000260708	2500.000000	0.000272382	2500.000000	1.90862e-08	
+2600.000000	0.000238494	2600.000000	0.000273462	2600.000000	0.000260974	2600.000000	0.00026071	2600.000000	0.000273444	2600.000000	1.83985e-08	
+2700.000000	0.000240158	2700.000000	0.000274621	2700.000000	0.000261033	2700.000000	0.00026077	2700.000000	0.000274603	2700.000000	1.77599e-08	
+2800.000000	0.000241928	2800.000000	0.000275867	2800.000000	0.000261143	2800.000000	0.000260881	2800.000000	0.00027585	2800.000000	1.71655e-08	
+2900.000000	0.000243795	2900.000000	0.000277191	2900.000000	0.000261295	2900.000000	0.000261034	2900.000000	0.000277175	2900.000000	1.66107e-08	
+3000.000000	0.00024575	3000.000000	0.000278585	3000.000000	0.000261485	3000.000000	0.000261225	3000.000000	0.000278569	3000.000000	1.60917e-08	
diff --git a/Inputs/EnergyLoss/proton_cd2.txt b/Inputs/EnergyLoss/proton_cd2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..a90a17b47e6c6f019efaafef9afb50e1b538ac4b
--- /dev/null
+++ b/Inputs/EnergyLoss/proton_cd2.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0204806	0.001000	0.0256984	0.001000	0.0340331	0.001000	0.0340331	0.001000	0.0229095	0.001000	0.00278888	
+0.002000	0.0248957	0.002000	0.031154	0.002000	0.0391101	0.002000	0.0391101	0.002000	0.0291996	0.002000	0.00195434	
+0.005000	0.0330803	0.005000	0.041354	0.005000	0.0478351	0.005000	0.0478351	0.005000	0.0402398	0.005000	0.00111416	
+0.008000	0.0385969	0.008000	0.0482452	0.008000	0.0533565	0.008000	0.0533565	0.008000	0.0474349	0.008000	0.000810337	
+0.010000	0.0415811	0.010000	0.0519804	0.010000	0.0562531	0.010000	0.0562531	0.010000	0.0512881	0.010000	0.000692311	
+0.015000	0.0502024	0.015000	0.0600709	0.015000	0.0620004	0.015000	0.0620004	0.015000	0.0595587	0.015000	0.000512204	
+0.020000	0.0572562	0.020000	0.0665994	0.020000	0.0664864	0.020000	0.0664864	0.020000	0.0661864	0.020000	0.00041303	
+0.025000	0.0630864	0.025000	0.072043	0.025000	0.0702124	0.025000	0.0702124	0.025000	0.0716946	0.025000	0.000348343	
+0.030000	0.067875	0.030000	0.0766497	0.030000	0.0737965	0.030000	0.0737965	0.030000	0.0763472	0.030000	0.000302487	
+0.035000	0.0717408	0.035000	0.0805682	0.035000	0.0767902	0.035000	0.0767902	0.035000	0.0803001	0.035000	0.000268116	
+0.040000	0.0747775	0.040000	0.0838974	0.040000	0.0792938	0.040000	0.0792938	0.040000	0.0836561	0.040000	0.000241304	
+0.045000	0.0770687	0.045000	0.0867086	0.045000	0.0813801	0.045000	0.0813801	0.045000	0.0864889	0.045000	0.000219747	
+0.050000	0.0786948	0.050000	0.0890574	0.050000	0.0831051	0.050000	0.0831051	0.050000	0.0888554	0.050000	0.000202003	
+0.055000	0.0797351	0.055000	0.0909894	0.055000	0.0845138	0.055000	0.0845138	0.055000	0.0908022	0.055000	0.000187118	
+0.060000	0.0802672	0.060000	0.0925438	0.060000	0.0856435	0.060000	0.0856435	0.060000	0.0923694	0.060000	0.000174436	
+0.070000	0.0801041	0.070000	0.094658	0.070000	0.0871882	0.070000	0.0871882	0.070000	0.0945041	0.070000	0.000153938	
+0.080000	0.0787519	0.080000	0.0956499	0.080000	0.0879478	0.080000	0.0879478	0.080000	0.0955119	0.080000	0.000138046	
+0.090000	0.0766599	0.090000	0.0957381	0.090000	0.0880857	0.090000	0.0880857	0.090000	0.0956128	0.090000	0.000125335	
+0.100000	0.0741689	0.100000	0.0951156	0.100000	0.0877338	0.100000	0.0877338	0.100000	0.0950007	0.100000	0.000114917	
+0.120000	0.0688664	0.120000	0.092384	0.120000	0.0859718	0.120000	0.0859718	0.120000	0.0922852	0.120000	9.88142e-05	
+0.140000	0.0638932	0.140000	0.0885006	0.140000	0.0833095	0.140000	0.0833095	0.140000	0.0884137	0.140000	8.69084e-05	
+0.160000	0.0595756	0.160000	0.084154	0.160000	0.0801772	0.160000	0.0801772	0.160000	0.0840763	0.160000	7.77203e-05	
+0.180000	0.0559277	0.180000	0.0797567	0.180000	0.0768552	0.180000	0.0768552	0.180000	0.0796863	0.180000	7.03984e-05	
+0.200000	0.0528583	0.200000	0.0755332	0.200000	0.0735201	0.200000	0.0735201	0.200000	0.0754688	0.200000	6.44161e-05	
+0.250000	0.0470291	0.250000	0.0662793	0.250000	0.0657164	0.250000	0.0657164	0.250000	0.066226	0.250000	5.33248e-05	
+0.300000	0.0428726	0.300000	0.0589586	0.300000	0.0590698	0.300000	0.0590698	0.300000	0.0589129	0.300000	4.56574e-05	
+0.350000	0.039681	0.350000	0.0532117	0.350000	0.053584	0.350000	0.053584	0.350000	0.0531717	0.350000	4.00192e-05	
+0.400000	0.0370929	0.400000	0.0486379	0.400000	0.0490756	0.400000	0.0490756	0.400000	0.0486022	0.400000	3.56869e-05	
+0.450000	0.0349146	0.450000	0.0449251	0.450000	0.0453446	0.450000	0.0453446	0.450000	0.0448929	0.450000	3.22472e-05	
+0.500000	0.0330346	0.500000	0.04185	0.500000	0.0422211	0.500000	0.0422211	0.500000	0.0418205	0.500000	2.94455e-05	
+0.600000	0.0299136	0.600000	0.0370303	0.600000	0.0372974	0.600000	0.0372974	0.600000	0.0370051	0.600000	2.5148e-05	
+0.700000	0.027398	0.700000	0.0333915	0.700000	0.0335836	0.700000	0.0335836	0.700000	0.0333695	0.700000	2.19975e-05	
+0.800000	0.0253115	0.800000	0.0305174	0.800000	0.0306657	0.800000	0.0306657	0.800000	0.0304978	0.800000	1.95829e-05	
+0.900000	0.023546	0.900000	0.0281709	0.900000	0.0282977	0.900000	0.0282977	0.900000	0.0281532	0.900000	1.76698e-05	
+1.000000	0.0220293	1.000000	0.0262071	1.000000	0.026327	1.000000	0.026327	1.000000	0.026191	1.000000	1.61143e-05	
+1.250000	0.0190232	1.250000	0.0224267	1.250000	0.0225599	1.250000	0.0225599	1.250000	0.0224135	1.250000	1.32498e-05	
+1.500000	0.0167836	1.500000	0.0196827	1.500000	0.0198433	1.500000	0.0198433	1.500000	0.0196714	1.500000	1.12855e-05	
+1.750000	0.015045	1.750000	0.0175832	1.750000	0.017771	1.750000	0.017771	1.750000	0.0175733	1.750000	9.85016e-06	
+2.000000	0.0136533	2.000000	0.015917	2.000000	0.016128	2.000000	0.016128	2.000000	0.0159083	2.000000	8.75293e-06	
+2.250000	0.0125119	2.250000	0.0145586	2.250000	0.0147883	2.250000	0.0147883	2.250000	0.0145507	2.250000	7.88547e-06	
+2.500000	0.0115082	2.500000	0.0134275	2.500000	0.0136717	2.500000	0.0136717	2.500000	0.0134204	2.500000	7.18153e-06	
+3.000000	0.0100487	3.000000	0.0116471	3.000000	0.011911	3.000000	0.011911	3.000000	0.011641	3.000000	6.10662e-06	
+3.500000	0.00894107	3.500000	0.0103051	3.500000	0.0105799	3.500000	0.0105799	3.500000	0.0102998	3.500000	5.32267e-06	
+4.000000	0.00806927	4.000000	0.00925469	4.000000	0.00953471	4.000000	0.00953471	4.000000	0.00924996	4.000000	4.72435e-06	
+4.500000	0.00736381	4.500000	0.00840845	4.500000	0.0086902	4.500000	0.0086902	4.500000	0.0084042	4.500000	4.25197e-06	
+5.000000	0.0067803	5.000000	0.00771115	5.000000	0.00799233	5.000000	0.00799233	5.000000	0.00770728	5.000000	3.86908e-06	
+5.500000	0.00628901	5.500000	0.00712599	5.500000	0.00740513	5.500000	0.00740513	5.500000	0.00712244	5.500000	3.55213e-06	
+6.000000	0.00586925	6.000000	0.00662748	6.000000	0.00690362	6.000000	0.00690362	6.000000	0.00662419	6.000000	3.28524e-06	
+6.500000	0.00550616	6.500000	0.00619738	6.500000	0.00646991	6.500000	0.00646991	6.500000	0.00619432	6.500000	3.05725e-06	
+7.000000	0.00518876	7.000000	0.00582227	7.000000	0.00609083	7.000000	0.00609083	7.000000	0.00581941	7.000000	2.86013e-06	
+7.500000	0.00490876	7.500000	0.00549206	7.500000	0.00575644	7.500000	0.00575644	7.500000	0.00548938	7.500000	2.68792e-06	
+8.000000	0.0046598	8.000000	0.00519902	8.000000	0.0054591	8.000000	0.0054591	8.000000	0.00519649	8.000000	2.53612e-06	
+8.500000	0.00443689	8.500000	0.0049371	8.500000	0.00519285	8.500000	0.00519285	8.500000	0.0049347	8.500000	2.40125e-06	
+9.000000	0.00423606	9.000000	0.00470151	9.000000	0.00495295	9.000000	0.00495295	9.000000	0.00469923	9.000000	2.2806e-06	
+9.500000	0.00405412	9.500000	0.0044884	9.500000	0.00473558	9.500000	0.00473558	9.500000	0.00448622	9.500000	2.172e-06	
+10.000000	0.00388847	10.000000	0.00444622	10.000000	0.00453765	10.000000	0.00453765	10.000000	0.00444415	10.000000	2.07369e-06	
+11.000000	0.00359787	11.000000	0.00412009	11.000000	0.00418615	11.000000	0.00418618	11.000000	0.00411819	11.000000	1.90257e-06	
+12.000000	0.00335108	12.000000	0.00384165	12.000000	0.00388822	12.000000	0.00388828	12.000000	0.00383989	12.000000	1.75858e-06	
+13.000000	0.00313872	13.000000	0.00360104	13.000000	0.00363249	13.000000	0.00363253	13.000000	0.00359941	13.000000	1.63567e-06	
+14.000000	0.00295393	14.000000	0.00339095	14.000000	0.00341056	14.000000	0.00341055	14.000000	0.00338942	14.000000	1.52946e-06	
+15.000000	0.00279158	15.000000	0.00320584	15.000000	0.00321608	15.000000	0.00321608	15.000000	0.0032044	15.000000	1.43673e-06	
+16.000000	0.00264774	16.000000	0.00304146	16.000000	0.00304436	16.000000	0.00304432	16.000000	0.0030401	16.000000	1.35503e-06	
+17.000000	0.00251937	17.000000	0.00289445	17.000000	0.00289167	17.000000	0.00289153	17.000000	0.00289317	17.000000	1.28248e-06	
+18.000000	0.00240406	18.000000	0.00276217	18.000000	0.00275495	18.000000	0.00275476	18.000000	0.00276095	18.000000	1.21761e-06	
+19.000000	0.00229987	19.000000	0.00264247	19.000000	0.00263184	19.000000	0.00263166	19.000000	0.00264131	19.000000	1.15924e-06	
+20.000000	0.00220524	20.000000	0.00253363	20.000000	0.00252048	20.000000	0.00252029	20.000000	0.00253252	20.000000	1.10642e-06	
+21.000000	0.00211888	21.000000	0.0024342	21.000000	0.0024193	21.000000	0.0024191	21.000000	0.00243314	21.000000	1.0584e-06	
+22.000000	0.00203975	22.000000	0.002343	22.000000	0.00232697	22.000000	0.00232678	22.000000	0.00234198	22.000000	1.01454e-06	
+23.000000	0.00196695	23.000000	0.00225903	23.000000	0.00224244	23.000000	0.00224224	23.000000	0.00225805	23.000000	9.74307e-07	
+24.000000	0.00189973	24.000000	0.00218145	24.000000	0.00216486	24.000000	0.00216458	24.000000	0.00218052	24.000000	9.37271e-07	
+25.000000	0.00183747	25.000000	0.00210956	25.000000	0.00209343	25.000000	0.00209303	25.000000	0.00210865	25.000000	9.03058e-07	
+27.000000	0.00172574	27.000000	0.00198044	27.000000	0.00196616	27.000000	0.00196566	27.000000	0.0019796	27.000000	8.41888e-07	
+29.000000	0.00162829	29.000000	0.00186774	29.000000	0.00185637	29.000000	0.00185587	29.000000	0.00186695	29.000000	7.88773e-07	
+31.000000	0.00154249	31.000000	0.00176847	31.000000	0.00175935	31.000000	0.00175885	31.000000	0.00176772	31.000000	7.42204e-07	
+33.000000	0.00146633	33.000000	0.00168033	33.000000	0.00167196	33.000000	0.00167148	33.000000	0.00167963	33.000000	7.01025e-07	
+35.000000	0.00139825	35.000000	0.00160152	35.000000	0.00159378	35.000000	0.00159336	35.000000	0.00160086	35.000000	6.64342e-07	
+38.000000	0.00130863	38.000000	0.00149778	38.000000	0.00149104	38.000000	0.00149047	38.000000	0.00149716	38.000000	6.16238e-07	
+41.000000	0.00123121	41.000000	0.00140818	41.000000	0.00140217	41.000000	0.00140158	41.000000	0.00140761	41.000000	5.74868e-07	
+44.000000	0.00116363	44.000000	0.00132998	44.000000	0.0013245	44.000000	0.00132397	44.000000	0.00132945	44.000000	5.38895e-07	
+47.000000	0.00110407	47.000000	0.00126112	47.000000	0.00125609	47.000000	0.00125558	47.000000	0.00126061	47.000000	5.07315e-07	
+50.000000	0.00105118	50.000000	0.00119999	50.000000	0.00119532	50.000000	0.00119484	50.000000	0.00119951	50.000000	4.7936e-07	
+55.000000	0.000974995	55.000000	0.00111202	55.000000	0.00110782	55.000000	0.00110738	55.000000	0.00111158	55.000000	4.39261e-07	
+60.000000	0.000910668	60.000000	0.00103784	60.000000	0.00103401	60.000000	0.00103357	60.000000	0.00103743	60.000000	4.05567e-07	
+65.000000	0.000855583	65.000000	0.000974411	65.000000	0.00097093	65.000000	0.000970418	65.000000	0.000974034	65.000000	3.76842e-07	
+70.000000	0.000807845	70.000000	0.000919532	70.000000	0.000916201	70.000000	0.000915735	70.000000	0.00091918	70.000000	3.5205e-07	
+75.000000	0.000766048	75.000000	0.000871563	75.000000	0.000868349	75.000000	0.000867909	75.000000	0.000871233	75.000000	3.30427e-07	
+80.000000	0.000729126	80.000000	0.000829265	80.000000	0.000826126	80.000000	0.00082571	80.000000	0.000828953	80.000000	3.11395e-07	
+85.000000	0.000696255	85.000000	0.000791676	85.000000	0.000788585	85.000000	0.000788192	85.000000	0.000791381	85.000000	2.94509e-07	
+90.000000	0.000666789	90.000000	0.000758044	90.000000	0.000754985	90.000000	0.000754607	90.000000	0.000757765	90.000000	2.79423e-07	
+95.000000	0.000640214	95.000000	0.00072777	95.000000	0.000724811	95.000000	0.000724363	95.000000	0.000727504	95.000000	2.65859e-07	
+100.000000	0.000616115	100.000000	0.00070037	100.000000	0.000697409	100.000000	0.00069698	100.000000	0.000700116	100.000000	2.53596e-07	
+105.000000	0.000594153	105.000000	0.000675449	105.000000	0.000672477	105.000000	0.000672067	105.000000	0.000675207	105.000000	2.42452e-07	
+110.000000	0.00057405	110.000000	0.000652683	110.000000	0.000649696	110.000000	0.000649302	110.000000	0.00065245	110.000000	2.32281e-07	
+115.000000	0.000555573	115.000000	0.0006318	115.000000	0.000628795	115.000000	0.000628416	115.000000	0.000631578	115.000000	2.22958e-07	
+120.000000	0.000538529	120.000000	0.000612576	120.000000	0.00060955	120.000000	0.000609184	120.000000	0.000612362	120.000000	2.1438e-07	
+125.000000	0.000522752	125.000000	0.000594818	125.000000	0.000591771	125.000000	0.000591416	125.000000	0.000594611	125.000000	2.0646e-07	
+130.000000	0.000508103	130.000000	0.000578363	130.000000	0.000575294	130.000000	0.00057495	130.000000	0.000578164	130.000000	1.99125e-07	
+135.000000	0.000494463	135.000000	0.000563072	135.000000	0.000559973	135.000000	0.000559647	135.000000	0.00056288	135.000000	1.92311e-07	
+140.000000	0.000481727	140.000000	0.000548825	140.000000	0.000545738	140.000000	0.000545389	140.000000	0.000548639	140.000000	1.85965e-07	
+145.000000	0.000469806	145.000000	0.000535518	145.000000	0.000532451	145.000000	0.00053207	145.000000	0.000535338	145.000000	1.80038e-07	
+150.000000	0.000458624	150.000000	0.00052306	150.000000	0.00051997	150.000000	0.000519601	150.000000	0.000522886	150.000000	1.7449e-07	
+155.000000	0.000442878	155.000000	0.000511373	155.000000	0.000508259	155.000000	0.000507903	155.000000	0.000511204	155.000000	1.69286e-07	
+160.000000	0.000433649	160.000000	0.000500386	160.000000	0.000497256	160.000000	0.000496907	160.000000	0.000500221	160.000000	1.64395e-07	
+165.000000	0.000424946	165.000000	0.000490037	165.000000	0.000486891	165.000000	0.000486551	165.000000	0.000489878	165.000000	1.59787e-07	
+170.000000	0.000416725	170.000000	0.000480274	170.000000	0.000477112	170.000000	0.00047678	170.000000	0.000480119	170.000000	1.5544e-07	
+175.000000	0.000408946	175.000000	0.000471047	175.000000	0.000467872	175.000000	0.000467547	175.000000	0.000470896	175.000000	1.51332e-07	
+180.000000	0.000401574	180.000000	0.000462313	180.000000	0.000459126	180.000000	0.000458809	180.000000	0.000462166	180.000000	1.47442e-07	
+185.000000	0.000394577	185.000000	0.000454034	185.000000	0.000450838	185.000000	0.000450526	185.000000	0.00045389	185.000000	1.43755e-07	
+190.000000	0.000387927	190.000000	0.000446174	190.000000	0.000442972	190.000000	0.000442665	190.000000	0.000446034	190.000000	1.40253e-07	
+195.000000	0.000381599	195.000000	0.000438704	195.000000	0.00043549	195.000000	0.000435194	195.000000	0.000438567	195.000000	1.36925e-07	
+200.000000	0.00037557	200.000000	0.000431594	200.000000	0.000428373	200.000000	0.000428084	200.000000	0.00043146	200.000000	1.33756e-07	
+210.000000	0.000364325	210.000000	0.000418356	210.000000	0.000415174	210.000000	0.000414851	210.000000	0.000418229	210.000000	1.27853e-07	
+220.000000	0.000354048	220.000000	0.000406285	220.000000	0.00040311	220.000000	0.000402788	220.000000	0.000406162	220.000000	1.22466e-07	
+230.000000	0.000344618	230.000000	0.000395232	230.000000	0.000392057	230.000000	0.000391748	230.000000	0.000395114	230.000000	1.17529e-07	
+240.000000	0.000335934	240.000000	0.000385074	240.000000	0.000381908	240.000000	0.000381607	240.000000	0.000384961	240.000000	1.12988e-07	
+250.000000	0.000327909	250.000000	0.000375708	250.000000	0.000372553	250.000000	0.000372261	250.000000	0.000375599	250.000000	1.08796e-07	
+260.000000	0.000320472	260.000000	0.000367045	260.000000	0.000363905	260.000000	0.000363621	260.000000	0.00036694	260.000000	1.04915e-07	
+270.000000	0.00031356	270.000000	0.000359009	270.000000	0.000355889	270.000000	0.000355612	270.000000	0.000358908	270.000000	1.0131e-07	
+280.000000	0.000307119	280.000000	0.000351536	280.000000	0.000348437	280.000000	0.000348167	280.000000	0.000351438	280.000000	9.79522e-08	
+290.000000	0.000301103	290.000000	0.000344569	290.000000	0.00034149	290.000000	0.00034123	290.000000	0.000344474	290.000000	9.48174e-08	
+300.000000	0.000295472	300.000000	0.000338058	300.000000	0.000335024	300.000000	0.000334752	300.000000	0.000337966	300.000000	9.18837e-08	
+310.000000	0.000290189	310.000000	0.000331962	310.000000	0.00032898	310.000000	0.000328689	310.000000	0.000331873	310.000000	8.91321e-08	
+320.000000	0.000285223	320.000000	0.000326242	320.000000	0.000323289	320.000000	0.000323005	320.000000	0.000326156	320.000000	8.65459e-08	
+330.000000	0.000280548	330.000000	0.000320866	330.000000	0.000317941	330.000000	0.000317665	330.000000	0.000320782	330.000000	8.41105e-08	
+340.000000	0.000276139	340.000000	0.000315803	340.000000	0.000312912	340.000000	0.000312639	340.000000	0.000315722	340.000000	8.18129e-08	
+350.000000	0.000271973	350.000000	0.000311029	350.000000	0.00030817	350.000000	0.000307903	350.000000	0.000310949	350.000000	7.96417e-08	
+360.000000	0.000268032	360.000000	0.000306519	360.000000	0.000303695	360.000000	0.000303432	360.000000	0.000306441	360.000000	7.75865e-08	
+370.000000	0.000264298	370.000000	0.000302252	370.000000	0.000299436	370.000000	0.000299178	370.000000	0.000302177	370.000000	7.56382e-08	
+380.000000	0.000260756	380.000000	0.000298211	380.000000	0.000295405	380.000000	0.00029515	380.000000	0.000298137	380.000000	7.37886e-08	
+390.000000	0.000257391	390.000000	0.000294378	390.000000	0.000291583	390.000000	0.000291332	390.000000	0.000294306	390.000000	7.20303e-08	
+400.000000	0.000254192	400.000000	0.000290738	400.000000	0.000287955	400.000000	0.000287708	400.000000	0.000290668	400.000000	7.03567e-08	
+410.000000	0.000251146	410.000000	0.000287278	410.000000	0.000284509	410.000000	0.000284265	410.000000	0.000287209	410.000000	6.87615e-08	
+420.000000	0.000248243	420.000000	0.000283984	420.000000	0.000281231	420.000000	0.00028099	420.000000	0.000283917	420.000000	6.72395e-08	
+430.000000	0.000245473	430.000000	0.000280847	430.000000	0.000278109	430.000000	0.000277871	430.000000	0.000280781	430.000000	6.57857e-08	
+440.000000	0.000242828	440.000000	0.000277854	440.000000	0.00027513	440.000000	0.000274899	440.000000	0.00027779	440.000000	6.43955e-08	
+450.000000	0.000240301	450.000000	0.000274998	450.000000	0.000272292	450.000000	0.000272062	450.000000	0.000274935	450.000000	6.30647e-08	
+460.000000	0.000237883	460.000000	0.000272269	460.000000	0.00026959	460.000000	0.000269354	460.000000	0.000272207	460.000000	6.17897e-08	
+470.000000	0.000235568	470.000000	0.000269659	470.000000	0.000267012	470.000000	0.000266765	470.000000	0.000269599	470.000000	6.05668e-08	
+480.000000	0.00023335	480.000000	0.000267162	480.000000	0.000264542	480.000000	0.000264289	480.000000	0.000267102	480.000000	5.93931e-08	
+490.000000	0.000231223	490.000000	0.00026477	490.000000	0.000262169	490.000000	0.000261918	490.000000	0.000264711	490.000000	5.82655e-08	
+500.000000	0.000229183	500.000000	0.000262477	500.000000	0.000259893	500.000000	0.000259647	500.000000	0.00026242	500.000000	5.71813e-08	
+520.000000	0.000225341	520.000000	0.000258168	520.000000	0.000255621	520.000000	0.00025538	520.000000	0.000258113	520.000000	5.51334e-08	
+540.000000	0.00022179	540.000000	0.000254193	540.000000	0.000251684	540.000000	0.000251447	540.000000	0.00025414	540.000000	5.32317e-08	
+560.000000	0.000218501	560.000000	0.000250518	560.000000	0.000248046	560.000000	0.000247813	560.000000	0.000250467	560.000000	5.1461e-08	
+580.000000	0.000215448	580.000000	0.000247113	580.000000	0.000244676	580.000000	0.000244447	580.000000	0.000247063	580.000000	4.98079e-08	
+600.000000	0.000212608	600.000000	0.000243951	600.000000	0.000241548	600.000000	0.000241323	600.000000	0.000243902	600.000000	4.82611e-08	
+620.000000	0.000209962	620.000000	0.000241009	620.000000	0.000238639	620.000000	0.000238417	620.000000	0.000240962	620.000000	4.68105e-08	
+640.000000	0.000207493	640.000000	0.000238267	640.000000	0.000235929	640.000000	0.00023571	640.000000	0.000238222	640.000000	4.54472e-08	
+660.000000	0.000205185	660.000000	0.000235708	660.000000	0.000233398	660.000000	0.000233182	660.000000	0.000235664	660.000000	4.41636e-08	
+680.000000	0.000203024	680.000000	0.000233316	680.000000	0.00023103	680.000000	0.000230819	680.000000	0.000233273	680.000000	4.29529e-08	
+700.000000	0.000201	700.000000	0.000231077	700.000000	0.000228819	700.000000	0.000228607	700.000000	0.000231035	700.000000	4.18088e-08	
+720.000000	0.000199101	720.000000	0.000228978	720.000000	0.000226753	720.000000	0.000226532	720.000000	0.000228937	720.000000	4.0726e-08	
+740.000000	0.000197317	740.000000	0.000227008	740.000000	0.000224812	740.000000	0.000224583	740.000000	0.000226969	740.000000	3.96996e-08	
+760.000000	0.00019564	760.000000	0.000225158	760.000000	0.00022298	760.000000	0.000222751	760.000000	0.00022512	760.000000	3.87253e-08	
+780.000000	0.000194063	780.000000	0.000223419	780.000000	0.000221251	780.000000	0.000221026	780.000000	0.000223381	780.000000	3.77992e-08	
+800.000000	0.000192577	800.000000	0.000221781	800.000000	0.000219623	800.000000	0.000219401	800.000000	0.000221744	800.000000	3.69178e-08	
+820.000000	0.000191177	820.000000	0.000220239	820.000000	0.000218087	820.000000	0.000217868	820.000000	0.000220203	820.000000	3.60778e-08	
+840.000000	0.000189857	840.000000	0.000218785	840.000000	0.000216638	840.000000	0.00021642	840.000000	0.00021875	840.000000	3.52764e-08	
+860.000000	0.000188612	860.000000	0.000217413	860.000000	0.000215268	860.000000	0.000215051	860.000000	0.000217379	860.000000	3.45109e-08	
+880.000000	0.000187437	880.000000	0.000216119	880.000000	0.000213971	880.000000	0.000213757	880.000000	0.000216085	880.000000	3.3779e-08	
+900.000000	0.000186327	900.000000	0.000214896	900.000000	0.000212743	900.000000	0.000212531	900.000000	0.000214863	900.000000	3.30785e-08	
+920.000000	0.000185278	920.000000	0.000213741	920.000000	0.00021158	920.000000	0.000211369	920.000000	0.000213708	920.000000	3.24074e-08	
+940.000000	0.000184288	940.000000	0.000212648	940.000000	0.000210477	940.000000	0.000210267	940.000000	0.000212617	940.000000	3.17638e-08	
+960.000000	0.000183351	960.000000	0.000211615	960.000000	0.00020943	960.000000	0.000209221	960.000000	0.000211584	960.000000	3.11461e-08	
+980.000000	0.000182466	980.000000	0.000210638	980.000000	0.000208435	980.000000	0.000208228	980.000000	0.000210607	980.000000	3.05527e-08	
+1000.000000	0.000181629	1000.000000	0.000209713	1000.000000	0.00020749	1000.000000	0.000207285	1000.000000	0.000209683	1000.000000	2.99822e-08	
+1020.000000	0.000180838	1020.000000	0.000208837	1020.000000	0.000206592	1020.000000	0.000206387	1020.000000	0.000208808	1020.000000	2.94333e-08	
+1040.000000	0.000180091	1040.000000	0.000208008	1040.000000	0.000205737	1040.000000	0.000205534	1040.000000	0.00020798	1040.000000	2.89047e-08	
+1060.000000	0.000179384	1060.000000	0.000207224	1060.000000	0.000204923	1060.000000	0.000204721	1060.000000	0.000207195	1060.000000	2.83954e-08	
+1080.000000	0.000178715	1080.000000	0.00020648	1080.000000	0.000204148	1080.000000	0.000203947	1080.000000	0.000206452	1080.000000	2.79043e-08	
+1100.000000	0.000178084	1100.000000	0.000205776	1100.000000	0.000203409	1100.000000	0.00020321	1100.000000	0.000205749	1100.000000	2.74305e-08	
+1120.000000	0.000177487	1120.000000	0.00020511	1120.000000	0.000202705	1120.000000	0.000202507	1120.000000	0.000205083	1120.000000	2.6973e-08	
+1140.000000	0.000176924	1140.000000	0.000204479	1140.000000	0.000202034	1140.000000	0.000201836	1140.000000	0.000204452	1140.000000	2.65309e-08	
+1160.000000	0.000176392	1160.000000	0.000203881	1160.000000	0.000201394	1160.000000	0.000201196	1160.000000	0.000203855	1160.000000	2.61036e-08	
+1180.000000	0.000175891	1180.000000	0.000203316	1180.000000	0.000200782	1180.000000	0.000200586	1180.000000	0.00020329	1180.000000	2.56902e-08	
+1200.000000	0.000175418	1200.000000	0.000202781	1200.000000	0.000200198	1200.000000	0.000200003	1200.000000	0.000202755	1200.000000	2.52902e-08	
+1220.000000	0.000174972	1220.000000	0.000202275	1220.000000	0.000199639	1220.000000	0.000199446	1220.000000	0.00020225	1220.000000	2.49028e-08	
+1240.000000	0.000174553	1240.000000	0.000201796	1240.000000	0.000199105	1240.000000	0.000198914	1240.000000	0.000201771	1240.000000	2.45275e-08	
+1260.000000	0.000174158	1260.000000	0.000201343	1260.000000	0.000198596	1260.000000	0.000198405	1260.000000	0.000201319	1260.000000	2.41636e-08	
+1280.000000	0.000173788	1280.000000	0.000200916	1280.000000	0.000198109	1280.000000	0.000197919	1280.000000	0.000200892	1280.000000	2.38108e-08	
+1300.000000	0.00017344	1300.000000	0.000200512	1300.000000	0.000197644	1300.000000	0.000197454	1300.000000	0.000200489	1300.000000	2.34684e-08	
+1320.000000	0.000173114	1320.000000	0.000200132	1320.000000	0.0001972	1320.000000	0.000197009	1320.000000	0.000200109	1320.000000	2.3136e-08	
+1340.000000	0.00017281	1340.000000	0.000199773	1340.000000	0.000196777	1340.000000	0.000196584	1340.000000	0.00019975	1340.000000	2.28132e-08	
+1360.000000	0.000172525	1360.000000	0.000199435	1360.000000	0.000196372	1360.000000	0.000196177	1360.000000	0.000199412	1360.000000	2.24996e-08	
+1380.000000	0.00017226	1380.000000	0.000199117	1380.000000	0.000195985	1380.000000	0.000195787	1380.000000	0.000199095	1380.000000	2.21948e-08	
+1400.000000	0.000172013	1400.000000	0.000198818	1400.000000	0.000195615	1400.000000	0.000195414	1400.000000	0.000198796	1400.000000	2.18983e-08	
+1420.000000	0.000171784	1420.000000	0.000198537	1420.000000	0.000195261	1420.000000	0.000195057	1420.000000	0.000198516	1420.000000	2.161e-08	
+1440.000000	0.000171572	1440.000000	0.000198275	1440.000000	0.00019492	1440.000000	0.000194716	1440.000000	0.000198253	1440.000000	2.13293e-08	
+1460.000000	0.000171376	1460.000000	0.000198028	1460.000000	0.000194594	1460.000000	0.000194388	1460.000000	0.000198007	1460.000000	2.10561e-08	
+1480.000000	0.000171197	1480.000000	0.000197799	1480.000000	0.000194281	1480.000000	0.000194075	1480.000000	0.000197778	1480.000000	2.079e-08	
+1500.000000	0.000171033	1500.000000	0.000197584	1500.000000	0.00019398	1500.000000	0.000193775	1500.000000	0.000197564	1500.000000	2.05308e-08	
+1520.000000	0.000170883	1520.000000	0.000197385	1520.000000	0.000193692	1520.000000	0.000193487	1520.000000	0.000197365	1520.000000	2.02781e-08	
+1540.000000	0.000170748	1540.000000	0.0001972	1540.000000	0.000193416	1540.000000	0.000193212	1540.000000	0.00019718	1540.000000	2.00318e-08	
+1560.000000	0.000170626	1560.000000	0.000197029	1560.000000	0.000193151	1560.000000	0.000192948	1560.000000	0.000197009	1560.000000	1.97916e-08	
+1580.000000	0.000170518	1580.000000	0.000196871	1580.000000	0.000192898	1580.000000	0.000192696	1580.000000	0.000196852	1580.000000	1.95573e-08	
+1600.000000	0.000170422	1600.000000	0.000196726	1600.000000	0.000192655	1600.000000	0.000192454	1600.000000	0.000196707	1600.000000	1.93286e-08	
+1620.000000	0.000170338	1620.000000	0.000196594	1620.000000	0.000192422	1620.000000	0.000192222	1620.000000	0.000196575	1620.000000	1.91054e-08	
+1640.000000	0.000170267	1640.000000	0.000196473	1640.000000	0.0001922	1640.000000	0.000192	1640.000000	0.000196454	1640.000000	1.88874e-08	
+1660.000000	0.000170207	1660.000000	0.000196364	1660.000000	0.000191987	1660.000000	0.000191788	1660.000000	0.000196345	1660.000000	1.86745e-08	
+1680.000000	0.000170158	1680.000000	0.000196266	1680.000000	0.000191783	1680.000000	0.000191585	1680.000000	0.000196247	1680.000000	1.84665e-08	
+1700.000000	0.00017012	1700.000000	0.000196178	1700.000000	0.000191588	1700.000000	0.00019139	1700.000000	0.00019616	1700.000000	1.82632e-08	
+1750.000000	0.00017007	1750.000000	0.000196004	1750.000000	0.000191136	1750.000000	0.000190939	1750.000000	0.000195986	1750.000000	1.77747e-08	
+1800.000000	0.00017008	1800.000000	0.000195889	1800.000000	0.000190731	1800.000000	0.000190535	1800.000000	0.000195872	1800.000000	1.73123e-08	
+1850.000000	0.000170146	1850.000000	0.000195829	1850.000000	0.000190369	1850.000000	0.000190174	1850.000000	0.000195812	1850.000000	1.68742e-08	
+1900.000000	0.000170264	1900.000000	0.000195819	1900.000000	0.000190046	1900.000000	0.000189852	1900.000000	0.000195802	1900.000000	1.64583e-08	
+1950.000000	0.000170431	1950.000000	0.000195855	1950.000000	0.000189759	1950.000000	0.000189565	1950.000000	0.000195839	1950.000000	1.6063e-08	
+2000.000000	0.000170642	2000.000000	0.000195934	2000.000000	0.000189504	2000.000000	0.00018931	2000.000000	0.000195918	2000.000000	1.56869e-08	
+2100.000000	0.000171189	2100.000000	0.000196208	2100.000000	0.00018908	2100.000000	0.000188888	2100.000000	0.000196193	2100.000000	1.49865e-08	
+2200.000000	0.000171883	2200.000000	0.00019662	2200.000000	0.000188755	2200.000000	0.000188565	2200.000000	0.000196606	2200.000000	1.43478e-08	
+2300.000000	0.000172709	2300.000000	0.000197152	2300.000000	0.000188515	2300.000000	0.000188326	2300.000000	0.000197138	2300.000000	1.37627e-08	
+2400.000000	0.000173651	2400.000000	0.000197788	2400.000000	0.000188346	2400.000000	0.000188157	2400.000000	0.000197775	2400.000000	1.32249e-08	
+2500.000000	0.000174699	2500.000000	0.000198516	2500.000000	0.000188237	2500.000000	0.00018805	2500.000000	0.000198504	2500.000000	1.27287e-08	
+2600.000000	0.00017584	2600.000000	0.000199326	2600.000000	0.00018818	2600.000000	0.000187993	2600.000000	0.000199314	2600.000000	1.22694e-08	
+2700.000000	0.000177067	2700.000000	0.000200208	2700.000000	0.000188167	2700.000000	0.000187981	2700.000000	0.000200197	2700.000000	1.1843e-08	
+2800.000000	0.000178372	2800.000000	0.000201155	2800.000000	0.000188192	2800.000000	0.000188007	2800.000000	0.000201143	2800.000000	1.14462e-08	
+2900.000000	0.000179749	2900.000000	0.000202159	2900.000000	0.000188249	2900.000000	0.000188065	2900.000000	0.000202148	2900.000000	1.10758e-08	
+3000.000000	0.00018119	3000.000000	0.000203215	3000.000000	0.000188335	3000.000000	0.000188151	3000.000000	0.000203204	3000.000000	1.07292e-08	
diff --git a/Inputs/EnergyLoss/triton_cd2.txt b/Inputs/EnergyLoss/triton_cd2.txt
new file mode 100644
index 0000000000000000000000000000000000000000..126b9a08dcca418ab52b146809fe3d05b63e63f7
--- /dev/null
+++ b/Inputs/EnergyLoss/triton_cd2.txt
@@ -0,0 +1,218 @@
+Energy (MeV/u)1	0 - [He-base] F.Hubert et al, AD&ND Tables 46(1990)1	Energy (MeV/u)2	1 - [H -base] J.F.Ziegler et al, Pergamon Press, NY (low energy)	Energy (MeV/u)3	2 - ATIMA 1.2  LS-theory (recommended for high energy)	Energy (MeV/u)4	3 - ATIMA 1.2  without LS-correction	Energy (MeV/u)5	4 - electrical component of [1] - J.F.Ziegler et al	Energy (MeV/u)6	5 - nuclear component of [1] - J.F.Ziegler et al	
+0.001000	0.0217109	0.001000	0.0270944	0.001000	0.0354291	0.001000	0.0354291	0.001000	0.0229095	0.001000	0.00418484	
+0.002000	0.0255722	0.002000	0.0319283	0.002000	0.0398845	0.002000	0.0398845	0.002000	0.0291996	0.002000	0.00272872	
+0.005000	0.0333574	0.005000	0.0416912	0.005000	0.0481723	0.005000	0.0481723	0.005000	0.0402398	0.005000	0.00145135	
+0.008000	0.0387718	0.008000	0.0484537	0.008000	0.053565	0.008000	0.053565	0.008000	0.0474349	0.008000	0.00101883	
+0.010000	0.0417262	0.010000	0.052148	0.010000	0.0564207	0.010000	0.0564207	0.010000	0.0512881	0.010000	0.000859862	
+0.015000	0.0502992	0.015000	0.0601862	0.015000	0.0621157	0.015000	0.0621157	0.015000	0.0595587	0.015000	0.000627508	
+0.020000	0.0573288	0.020000	0.0666859	0.020000	0.0665728	0.020000	0.0665728	0.020000	0.0661864	0.020000	0.000499508	
+0.025000	0.0631445	0.025000	0.0721121	0.025000	0.0702816	0.025000	0.0702816	0.025000	0.0716946	0.025000	0.000417526	
+0.030000	0.0679234	0.030000	0.0767073	0.030000	0.0738542	0.030000	0.0738542	0.030000	0.0763472	0.030000	0.000360139	
+0.035000	0.0717823	0.035000	0.0806176	0.035000	0.0768396	0.035000	0.0768396	0.035000	0.0803001	0.035000	0.000317533	
+0.040000	0.0748138	0.040000	0.0839406	0.040000	0.079337	0.040000	0.079337	0.040000	0.0836561	0.040000	0.000284543	
+0.045000	0.077101	0.045000	0.086747	0.045000	0.0814185	0.045000	0.0814185	0.045000	0.0864889	0.045000	0.000258182	
+0.050000	0.0787239	0.050000	0.089092	0.050000	0.0831397	0.050000	0.0831397	0.050000	0.0888554	0.050000	0.000236594	
+0.055000	0.0797615	0.055000	0.0910208	0.055000	0.0845453	0.055000	0.0845453	0.055000	0.0908022	0.055000	0.000218564	
+0.060000	0.0802914	0.060000	0.0925726	0.060000	0.0856723	0.060000	0.0856723	0.060000	0.0923694	0.060000	0.000203262	
+0.070000	0.0801249	0.070000	0.0946827	0.070000	0.0872129	0.070000	0.0872129	0.070000	0.0945041	0.070000	0.000178646	
+0.080000	0.07877	0.080000	0.0956715	0.080000	0.0879694	0.080000	0.0879694	0.080000	0.0955119	0.080000	0.000159666	
+0.090000	0.076676	0.090000	0.0957574	0.090000	0.0881049	0.090000	0.0881049	0.090000	0.0956128	0.090000	0.000144553	
+0.100000	0.0741834	0.100000	0.0951329	0.100000	0.0877511	0.100000	0.0877511	0.100000	0.0950007	0.100000	0.000132212	
+0.120000	0.0688785	0.120000	0.0923984	0.120000	0.0859862	0.120000	0.0859862	0.120000	0.0922852	0.120000	0.000113227	
+0.140000	0.0639036	0.140000	0.088513	0.140000	0.0833218	0.140000	0.0833218	0.140000	0.0884137	0.140000	9.92624e-05	
+0.160000	0.0595847	0.160000	0.0841648	0.160000	0.080188	0.160000	0.080188	0.160000	0.0840763	0.160000	8.85301e-05	
+0.180000	0.0559358	0.180000	0.0797663	0.180000	0.0768648	0.180000	0.0768648	0.180000	0.0796863	0.180000	8.00071e-05	
+0.200000	0.0528655	0.200000	0.0755419	0.200000	0.0735288	0.200000	0.0735288	0.200000	0.0754688	0.200000	7.3064e-05	
+0.250000	0.0470349	0.250000	0.0662862	0.250000	0.0657233	0.250000	0.0657233	0.250000	0.066226	0.250000	6.02431e-05	
+0.300000	0.0428774	0.300000	0.0589644	0.300000	0.0590755	0.300000	0.0590755	0.300000	0.0589129	0.300000	5.14227e-05	
+0.350000	0.0396851	0.350000	0.0532167	0.350000	0.0535889	0.350000	0.0535889	0.350000	0.0531717	0.350000	4.49608e-05	
+0.400000	0.0370965	0.400000	0.0486422	0.400000	0.04908	0.400000	0.04908	0.400000	0.0486022	0.400000	4.00109e-05	
+0.450000	0.0349179	0.450000	0.044929	0.450000	0.0453485	0.450000	0.0453485	0.450000	0.0448929	0.450000	3.60907e-05	
+0.500000	0.0330375	0.500000	0.0418535	0.500000	0.0422245	0.500000	0.0422245	0.500000	0.0418205	0.500000	3.29046e-05	
+0.600000	0.029916	0.600000	0.0370331	0.600000	0.0373002	0.600000	0.0373002	0.600000	0.0370051	0.600000	2.80306e-05	
+0.700000	0.0274 	0.700000	0.033394	0.700000	0.0335861	0.700000	0.0335861	0.700000	0.0333695	0.700000	2.44683e-05	
+0.800000	0.0253133	0.800000	0.0305196	0.800000	0.0306678	0.800000	0.0306678	0.800000	0.0304978	0.800000	2.17449e-05	
+0.900000	0.0235476	0.900000	0.0281728	0.900000	0.0282996	0.900000	0.0282996	0.900000	0.0281532	0.900000	1.95915e-05	
+1.000000	0.0220308	1.000000	0.0262089	1.000000	0.0263287	1.000000	0.0263287	1.000000	0.026191	1.000000	1.78439e-05	
+1.250000	0.0190243	1.250000	0.0224281	1.250000	0.0225613	1.250000	0.0225613	1.250000	0.0224135	1.250000	1.46335e-05	
+1.500000	0.0167845	1.500000	0.0196839	1.500000	0.0198445	1.500000	0.0198445	1.500000	0.0196714	1.500000	1.24386e-05	
+1.750000	0.0150459	1.750000	0.0175841	1.750000	0.017772	1.750000	0.017772	1.750000	0.0175733	1.750000	1.08385e-05	
+2.000000	0.013654	2.000000	0.0159179	2.000000	0.0161289	2.000000	0.0161289	2.000000	0.0159083	2.000000	9.61771e-06	
+2.250000	0.0125126	2.250000	0.0145594	2.250000	0.014789	2.250000	0.014789	2.250000	0.0145507	2.250000	8.65417e-06	
+2.500000	0.0115082	2.500000	0.0134282	2.500000	0.0136724	2.500000	0.0136724	2.500000	0.0134204	2.500000	7.87336e-06	
+3.000000	0.0100487	3.000000	0.0116477	3.000000	0.0119115	3.000000	0.0119115	3.000000	0.011641	3.000000	6.68314e-06	
+3.500000	0.00894107	3.500000	0.0103056	3.500000	0.0105804	3.500000	0.0105804	3.500000	0.0102998	3.500000	5.81683e-06	
+4.000000	0.00806927	4.000000	0.00925512	4.000000	0.00953515	4.000000	0.00953515	4.000000	0.00924996	4.000000	5.15674e-06	
+4.500000	0.00736381	4.500000	0.00840883	4.500000	0.00869058	4.500000	0.00869058	4.500000	0.0084042	4.500000	4.63632e-06	
+5.000000	0.0067803	5.000000	0.0077115	5.000000	0.00799268	5.000000	0.00799268	5.000000	0.00770728	5.000000	4.21499e-06	
+5.500000	0.00628901	5.500000	0.0071263	5.500000	0.00740544	5.500000	0.00740544	5.500000	0.00712244	5.500000	3.8666e-06	
+6.000000	0.00586925	6.000000	0.00662777	6.000000	0.00690391	6.000000	0.00690391	6.000000	0.00662419	6.000000	3.5735e-06	
+6.500000	0.00550616	6.500000	0.00619764	6.500000	0.00647018	6.500000	0.00647018	6.500000	0.00619432	6.500000	3.32333e-06	
+7.000000	0.00518876	7.000000	0.00582251	7.000000	0.00609108	7.000000	0.00609108	7.000000	0.00581941	7.000000	3.10721e-06	
+7.500000	0.00490876	7.500000	0.0054923	7.500000	0.00575667	7.500000	0.00575667	7.500000	0.00548938	7.500000	2.91853e-06	
+8.000000	0.0046598	8.000000	0.00519924	8.000000	0.00545932	8.000000	0.00545932	8.000000	0.00519649	8.000000	2.75232e-06	
+8.500000	0.00443689	8.500000	0.0049373	8.500000	0.00519306	8.500000	0.00519306	8.500000	0.0049347	8.500000	2.60473e-06	
+9.000000	0.00423606	9.000000	0.0047017	9.000000	0.00495314	9.000000	0.00495314	9.000000	0.00469923	9.000000	2.47278e-06	
+9.500000	0.00405412	9.500000	0.00448858	9.500000	0.00473576	9.500000	0.00473576	9.500000	0.00448622	9.500000	2.35406e-06	
+10.000000	0.00388847	10.000000	0.00444639	10.000000	0.00453782	10.000000	0.00453782	10.000000	0.00444415	10.000000	2.24665e-06	
+11.000000	0.00359787	11.000000	0.00412025	11.000000	0.00418631	11.000000	0.00418634	11.000000	0.00411819	11.000000	2.0598e-06	
+12.000000	0.00335108	12.000000	0.0038418	12.000000	0.00388836	12.000000	0.00388842	12.000000	0.00383989	12.000000	1.90271e-06	
+13.000000	0.00313872	13.000000	0.00360118	13.000000	0.00363262	13.000000	0.00363266	13.000000	0.00359941	13.000000	1.76871e-06	
+14.000000	0.00295393	14.000000	0.00339107	14.000000	0.00341068	14.000000	0.00341068	14.000000	0.00338942	14.000000	1.653e-06	
+15.000000	0.00279158	15.000000	0.00320596	15.000000	0.00321619	15.000000	0.0032162	15.000000	0.0032044	15.000000	1.55203e-06	
+16.000000	0.00264774	16.000000	0.00304156	16.000000	0.00304446	16.000000	0.00304443	16.000000	0.0030401	16.000000	1.46313e-06	
+17.000000	0.00251937	17.000000	0.00289455	17.000000	0.00289177	17.000000	0.00289163	17.000000	0.00289317	17.000000	1.38422e-06	
+18.000000	0.00240406	18.000000	0.00276226	18.000000	0.00275505	18.000000	0.00275486	18.000000	0.00276095	18.000000	1.3137e-06	
+19.000000	0.00229987	19.000000	0.00264256	19.000000	0.00263193	19.000000	0.00263175	19.000000	0.00264131	19.000000	1.25027e-06	
+20.000000	0.00220524	20.000000	0.00253371	20.000000	0.00252056	20.000000	0.00252038	20.000000	0.00253252	20.000000	1.1929e-06	
+21.000000	0.00211888	21.000000	0.00243428	21.000000	0.00241938	21.000000	0.00241918	21.000000	0.00243314	21.000000	1.14076e-06	
+22.000000	0.00203975	22.000000	0.00234308	22.000000	0.00232705	22.000000	0.00232685	22.000000	0.00234198	22.000000	1.09315e-06	
+23.000000	0.00196695	23.000000	0.0022591	23.000000	0.00224252	23.000000	0.00224232	23.000000	0.00225805	23.000000	1.04951e-06	
+24.000000	0.00189973	24.000000	0.00218152	24.000000	0.00216493	24.000000	0.00216466	24.000000	0.00218052	24.000000	1.00934e-06	
+25.000000	0.00183747	25.000000	0.00210962	25.000000	0.0020935	25.000000	0.0020931	25.000000	0.00210865	25.000000	9.72241e-07	
+27.000000	0.00172574	27.000000	0.00198051	27.000000	0.00196623	27.000000	0.00196572	27.000000	0.0019796	27.000000	9.05946e-07	
+29.000000	0.00162829	29.000000	0.0018678	29.000000	0.00185643	29.000000	0.00185593	29.000000	0.00186695	29.000000	8.48414e-07	
+31.000000	0.00154249	31.000000	0.00176852	31.000000	0.00175941	31.000000	0.00175891	31.000000	0.00176772	31.000000	7.97996e-07	
+33.000000	0.00146633	33.000000	0.00168038	33.000000	0.00167201	33.000000	0.00167154	33.000000	0.00167963	33.000000	7.53436e-07	
+35.000000	0.00139825	35.000000	0.00160157	35.000000	0.00159383	35.000000	0.00159341	35.000000	0.00160086	35.000000	7.13758e-07	
+38.000000	0.00130863	38.000000	0.00149782	38.000000	0.00149109	38.000000	0.00149052	38.000000	0.00149716	38.000000	6.61753e-07	
+41.000000	0.00123121	41.000000	0.00140822	41.000000	0.00140221	41.000000	0.00140162	41.000000	0.00140761	41.000000	6.17053e-07	
+44.000000	0.00116363	44.000000	0.00133002	44.000000	0.00132454	44.000000	0.00132401	44.000000	0.00132945	44.000000	5.78203e-07	
+47.000000	0.00110407	47.000000	0.00126116	47.000000	0.00125612	47.000000	0.00125562	47.000000	0.00126061	47.000000	5.44114e-07	
+50.000000	0.00105118	50.000000	0.00120002	50.000000	0.00119535	50.000000	0.00119488	50.000000	0.00119951	50.000000	5.13952e-07	
+55.000000	0.000974995	55.000000	0.00111205	55.000000	0.00110785	55.000000	0.00110741	55.000000	0.00111158	55.000000	4.70708e-07	
+60.000000	0.000910668	60.000000	0.00103787	60.000000	0.00103404	60.000000	0.0010336	60.000000	0.00103743	60.000000	4.34393e-07	
+65.000000	0.000855583	65.000000	0.000974437	65.000000	0.000970957	65.000000	0.000970444	65.000000	0.000974034	65.000000	4.03451e-07	
+70.000000	0.000807845	70.000000	0.000919556	70.000000	0.000916226	70.000000	0.00091576	70.000000	0.00091918	70.000000	3.76758e-07	
+75.000000	0.000766048	75.000000	0.000871586	75.000000	0.000868372	75.000000	0.000867932	75.000000	0.000871233	75.000000	3.53488e-07	
+80.000000	0.000729126	80.000000	0.000829286	80.000000	0.000826147	80.000000	0.000825732	80.000000	0.000828953	80.000000	3.33014e-07	
+85.000000	0.000696255	85.000000	0.000791696	85.000000	0.000788605	85.000000	0.000788212	85.000000	0.000791381	85.000000	3.14857e-07	
+90.000000	0.000666789	90.000000	0.000758064	90.000000	0.000755004	90.000000	0.000754627	90.000000	0.000757765	90.000000	2.9864e-07	
+95.000000	0.000640214	95.000000	0.000727789	95.000000	0.000724829	95.000000	0.000724382	95.000000	0.000727504	95.000000	2.84065e-07	
+100.000000	0.000616115	100.000000	0.000700387	100.000000	0.000697426	100.000000	0.000696998	100.000000	0.000700116	100.000000	2.70891e-07	
+105.000000	0.000594153	105.000000	0.000675466	105.000000	0.000672493	105.000000	0.000672084	105.000000	0.000675207	105.000000	2.58925e-07	
+110.000000	0.00057405	110.000000	0.000652698	110.000000	0.000649712	110.000000	0.000649318	110.000000	0.00065245	110.000000	2.48004e-07	
+115.000000	0.000555573	115.000000	0.000631816	115.000000	0.00062881	115.000000	0.000628431	115.000000	0.000631578	115.000000	2.37997e-07	
+120.000000	0.000538529	120.000000	0.00061259	120.000000	0.000609564	120.000000	0.000609198	120.000000	0.000612362	120.000000	2.28793e-07	
+125.000000	0.000522752	125.000000	0.000594832	125.000000	0.000591785	125.000000	0.00059143	125.000000	0.000594611	125.000000	2.20297e-07	
+130.000000	0.000508103	130.000000	0.000578376	130.000000	0.000575307	130.000000	0.000574963	130.000000	0.000578164	130.000000	2.1243e-07	
+135.000000	0.000494463	135.000000	0.000563085	135.000000	0.000559986	135.000000	0.00055966	135.000000	0.00056288	135.000000	2.05123e-07	
+140.000000	0.000481727	140.000000	0.000548838	140.000000	0.00054575	140.000000	0.000545401	140.000000	0.000548639	140.000000	1.98319e-07	
+145.000000	0.000469806	145.000000	0.00053553	145.000000	0.000532463	145.000000	0.000532082	145.000000	0.000535338	145.000000	1.91966e-07	
+150.000000	0.000458624	150.000000	0.000523072	150.000000	0.000519982	150.000000	0.000519613	150.000000	0.000522886	150.000000	1.86021e-07	
+155.000000	0.000442878	155.000000	0.000511384	155.000000	0.00050827	155.000000	0.000507915	155.000000	0.000511204	155.000000	1.80445e-07	
+160.000000	0.000433649	160.000000	0.000500396	160.000000	0.000497266	160.000000	0.000496918	160.000000	0.000500221	160.000000	1.75204e-07	
+165.000000	0.000424946	165.000000	0.000490048	165.000000	0.000486901	165.000000	0.000486561	165.000000	0.000489878	165.000000	1.7027e-07	
+170.000000	0.000416725	170.000000	0.000480284	170.000000	0.000477123	170.000000	0.00047679	170.000000	0.000480119	170.000000	1.65614e-07	
+175.000000	0.000408946	175.000000	0.000471057	175.000000	0.000467882	175.000000	0.000467557	175.000000	0.000470896	175.000000	1.61215e-07	
+180.000000	0.000401574	180.000000	0.000462323	180.000000	0.000459136	180.000000	0.000458818	180.000000	0.000462166	180.000000	1.57051e-07	
+185.000000	0.000394577	185.000000	0.000454043	185.000000	0.000450847	185.000000	0.000450536	185.000000	0.00045389	185.000000	1.53104e-07	
+190.000000	0.000387927	190.000000	0.000446184	190.000000	0.000442981	190.000000	0.000442674	190.000000	0.000446034	190.000000	1.49356e-07	
+195.000000	0.000381599	195.000000	0.000438713	195.000000	0.000435499	195.000000	0.000435202	195.000000	0.000438567	195.000000	1.45794e-07	
+200.000000	0.00037557	200.000000	0.000431603	200.000000	0.000428382	200.000000	0.000428093	200.000000	0.00043146	200.000000	1.42403e-07	
+210.000000	0.000364325	210.000000	0.000418365	210.000000	0.000415182	210.000000	0.000414859	210.000000	0.000418229	210.000000	1.36089e-07	
+220.000000	0.000354048	220.000000	0.000406293	220.000000	0.000403117	220.000000	0.000402796	220.000000	0.000406162	220.000000	1.30327e-07	
+230.000000	0.000344618	230.000000	0.000395239	230.000000	0.000392064	230.000000	0.000391755	230.000000	0.000395114	230.000000	1.25049e-07	
+240.000000	0.000335934	240.000000	0.000385081	240.000000	0.000381915	240.000000	0.000381614	240.000000	0.000384961	240.000000	1.20195e-07	
+250.000000	0.000327909	250.000000	0.000375715	250.000000	0.00037256	250.000000	0.000372268	250.000000	0.000375599	250.000000	1.15715e-07	
+260.000000	0.000320472	260.000000	0.000367052	260.000000	0.000363912	260.000000	0.000363628	260.000000	0.00036694	260.000000	1.11567e-07	
+270.000000	0.00031356	270.000000	0.000359016	270.000000	0.000355895	270.000000	0.000355618	270.000000	0.000358908	270.000000	1.07715e-07	
+280.000000	0.000307119	280.000000	0.000351542	280.000000	0.000348443	280.000000	0.000348173	280.000000	0.000351438	280.000000	1.04129e-07	
+290.000000	0.000301103	290.000000	0.000344575	290.000000	0.000341496	290.000000	0.000341236	290.000000	0.000344474	290.000000	1.00781e-07	
+300.000000	0.000295472	300.000000	0.000338064	300.000000	0.00033503	300.000000	0.000334758	300.000000	0.000337966	300.000000	9.76489e-08	
+310.000000	0.000290189	310.000000	0.000331968	310.000000	0.000328986	310.000000	0.000328695	310.000000	0.000331873	310.000000	9.47113e-08	
+320.000000	0.000285223	320.000000	0.000326248	320.000000	0.000323295	320.000000	0.00032301	320.000000	0.000326156	320.000000	9.19508e-08	
+330.000000	0.000280548	330.000000	0.000320871	330.000000	0.000317946	330.000000	0.00031767	330.000000	0.000320782	330.000000	8.93516e-08	
+340.000000	0.000276139	340.000000	0.000315808	340.000000	0.000312917	340.000000	0.000312644	340.000000	0.000315722	340.000000	8.68999e-08	
+350.000000	0.000271973	350.000000	0.000311034	350.000000	0.000308175	350.000000	0.000307908	350.000000	0.000310949	350.000000	8.45833e-08	
+360.000000	0.000268032	360.000000	0.000306523	360.000000	0.0003037	360.000000	0.000303437	360.000000	0.000306441	360.000000	8.23909e-08	
+370.000000	0.000264298	370.000000	0.000302257	370.000000	0.000299441	370.000000	0.000299182	370.000000	0.000302177	370.000000	8.03127e-08	
+380.000000	0.000260756	380.000000	0.000298215	380.000000	0.000295409	380.000000	0.000295154	380.000000	0.000298137	380.000000	7.83401e-08	
+390.000000	0.000257391	390.000000	0.000294382	390.000000	0.000291587	390.000000	0.000291336	390.000000	0.000294306	390.000000	7.64651e-08	
+400.000000	0.000254192	400.000000	0.000290742	400.000000	0.00028796	400.000000	0.000287713	400.000000	0.000290668	400.000000	7.46806e-08	
+410.000000	0.000251146	410.000000	0.000287282	410.000000	0.000284513	410.000000	0.00028427	410.000000	0.000287209	410.000000	7.298e-08	
+420.000000	0.000248243	420.000000	0.000283988	420.000000	0.000281235	420.000000	0.000280994	420.000000	0.000283917	420.000000	7.13576e-08	
+430.000000	0.000245473	430.000000	0.000280851	430.000000	0.000278113	430.000000	0.000277875	430.000000	0.000280781	430.000000	6.98079e-08	
+440.000000	0.000242828	440.000000	0.000277858	440.000000	0.000275134	440.000000	0.000274902	440.000000	0.00027779	440.000000	6.83263e-08	
+450.000000	0.000240301	450.000000	0.000275002	450.000000	0.000272295	450.000000	0.000272066	450.000000	0.000274935	450.000000	6.69082e-08	
+460.000000	0.000237883	460.000000	0.000272272	460.000000	0.000269594	460.000000	0.000269357	460.000000	0.000272207	460.000000	6.55496e-08	
+470.000000	0.000235568	470.000000	0.000269663	470.000000	0.000267016	470.000000	0.000266769	470.000000	0.000269599	470.000000	6.42468e-08	
+480.000000	0.00023335	480.000000	0.000267165	480.000000	0.000264546	480.000000	0.000264292	480.000000	0.000267102	480.000000	6.29964e-08	
+490.000000	0.000231223	490.000000	0.000264773	490.000000	0.000262173	490.000000	0.000261921	490.000000	0.000264711	490.000000	6.17952e-08	
+500.000000	0.000229183	500.000000	0.000262481	500.000000	0.000259897	500.000000	0.00025965	500.000000	0.00026242	500.000000	6.06404e-08	
+520.000000	0.000225341	520.000000	0.000258171	520.000000	0.000255624	520.000000	0.000255383	520.000000	0.000258113	520.000000	5.84595e-08	
+540.000000	0.00022179	540.000000	0.000254196	540.000000	0.000251687	540.000000	0.00025145	540.000000	0.00025414	540.000000	5.64347e-08	
+560.000000	0.000218501	560.000000	0.000250521	560.000000	0.000248049	560.000000	0.000247816	560.000000	0.000250467	560.000000	5.45495e-08	
+580.000000	0.000215448	580.000000	0.000247116	580.000000	0.000244679	580.000000	0.00024445	580.000000	0.000247063	580.000000	5.279e-08	
+600.000000	0.000212608	600.000000	0.000243953	600.000000	0.000241551	600.000000	0.000241326	600.000000	0.000243902	600.000000	5.11437e-08	
+620.000000	0.000209962	620.000000	0.000241012	620.000000	0.000238642	620.000000	0.00023842	620.000000	0.000240962	620.000000	4.96001e-08	
+640.000000	0.000207493	640.000000	0.00023827	640.000000	0.000235932	640.000000	0.000235712	640.000000	0.000238222	640.000000	4.81497e-08	
+660.000000	0.000205185	660.000000	0.000235711	660.000000	0.000233401	660.000000	0.000233185	660.000000	0.000235664	660.000000	4.67842e-08	
+680.000000	0.000203024	680.000000	0.000233319	680.000000	0.000231033	680.000000	0.000230822	680.000000	0.000233273	680.000000	4.54963e-08	
+700.000000	0.000201	700.000000	0.000231079	700.000000	0.000228821	700.000000	0.000228609	700.000000	0.000231035	700.000000	4.42796e-08	
+720.000000	0.000199101	720.000000	0.00022898	720.000000	0.000226756	720.000000	0.000226534	720.000000	0.000228937	720.000000	4.31281e-08	
+740.000000	0.000197317	740.000000	0.000227011	740.000000	0.000224815	740.000000	0.000224585	740.000000	0.000226969	740.000000	4.20368e-08	
+760.000000	0.00019564	760.000000	0.000225161	760.000000	0.000222982	760.000000	0.000222753	760.000000	0.00022512	760.000000	4.10011e-08	
+780.000000	0.000194063	780.000000	0.000223421	780.000000	0.000221253	780.000000	0.000221029	780.000000	0.000223381	780.000000	4.00166e-08	
+800.000000	0.000192577	800.000000	0.000221783	800.000000	0.000219625	800.000000	0.000219403	800.000000	0.000221744	800.000000	3.90797e-08	
+820.000000	0.000191177	820.000000	0.000220241	820.000000	0.00021809	820.000000	0.00021787	820.000000	0.000220203	820.000000	3.8187e-08	
+840.000000	0.000189857	840.000000	0.000218787	840.000000	0.00021664	840.000000	0.000216422	840.000000	0.00021875	840.000000	3.73354e-08	
+860.000000	0.000188612	860.000000	0.000217416	860.000000	0.00021527	860.000000	0.000215053	860.000000	0.000217379	860.000000	3.65221e-08	
+880.000000	0.000187437	880.000000	0.000216121	880.000000	0.000213973	880.000000	0.000213759	880.000000	0.000216085	880.000000	3.57445e-08	
+900.000000	0.000186327	900.000000	0.000214898	900.000000	0.000212745	900.000000	0.000212532	900.000000	0.000214863	900.000000	3.50003e-08	
+920.000000	0.000185278	920.000000	0.000213743	920.000000	0.000211582	920.000000	0.000211371	920.000000	0.000213708	920.000000	3.42873e-08	
+940.000000	0.000184288	940.000000	0.00021265	940.000000	0.000210478	940.000000	0.000210269	940.000000	0.000212617	940.000000	3.36038e-08	
+960.000000	0.000183351	960.000000	0.000211617	960.000000	0.000209431	960.000000	0.000209223	960.000000	0.000211584	960.000000	3.29477e-08	
+980.000000	0.000182466	980.000000	0.00021064	980.000000	0.000208437	980.000000	0.00020823	980.000000	0.000210607	980.000000	3.23175e-08	
+1000.000000	0.000181629	1000.000000	0.000209715	1000.000000	0.000207492	1000.000000	0.000207286	1000.000000	0.000209683	1000.000000	3.17118e-08	
+1020.000000	0.000180838	1020.000000	0.000208839	1020.000000	0.000206593	1020.000000	0.000206389	1020.000000	0.000208808	1020.000000	3.11289e-08	
+1040.000000	0.000180091	1040.000000	0.00020801	1040.000000	0.000205738	1040.000000	0.000205535	1040.000000	0.00020798	1040.000000	3.05678e-08	
+1060.000000	0.000179384	1060.000000	0.000207225	1060.000000	0.000204925	1060.000000	0.000204723	1060.000000	0.000207195	1060.000000	3.00271e-08	
+1080.000000	0.000178715	1080.000000	0.000206482	1080.000000	0.000204149	1080.000000	0.000203949	1080.000000	0.000206452	1080.000000	2.95058e-08	
+1100.000000	0.000178084	1100.000000	0.000205778	1100.000000	0.000203411	1100.000000	0.000203211	1100.000000	0.000205749	1100.000000	2.90028e-08	
+1120.000000	0.000177487	1120.000000	0.000205112	1120.000000	0.000202707	1120.000000	0.000202508	1120.000000	0.000205083	1120.000000	2.85172e-08	
+1140.000000	0.000176924	1140.000000	0.00020448	1140.000000	0.000202036	1140.000000	0.000201837	1140.000000	0.000204452	1140.000000	2.80481e-08	
+1160.000000	0.000176392	1160.000000	0.000203883	1160.000000	0.000201395	1160.000000	0.000201198	1160.000000	0.000203855	1160.000000	2.75946e-08	
+1180.000000	0.000175891	1180.000000	0.000203317	1180.000000	0.000200783	1180.000000	0.000200587	1180.000000	0.00020329	1180.000000	2.7156e-08	
+1200.000000	0.000175418	1200.000000	0.000202782	1200.000000	0.000200199	1200.000000	0.000200004	1200.000000	0.000202755	1200.000000	2.67315e-08	
+1220.000000	0.000174972	1220.000000	0.000202276	1220.000000	0.000199641	1220.000000	0.000199447	1220.000000	0.00020225	1220.000000	2.63205e-08	
+1240.000000	0.000174553	1240.000000	0.000201797	1240.000000	0.000199107	1240.000000	0.000198915	1240.000000	0.000201771	1240.000000	2.59223e-08	
+1260.000000	0.000174158	1260.000000	0.000201345	1260.000000	0.000198597	1260.000000	0.000198406	1260.000000	0.000201319	1260.000000	2.55363e-08	
+1280.000000	0.000173788	1280.000000	0.000200917	1280.000000	0.00019811	1280.000000	0.00019792	1280.000000	0.000200892	1280.000000	2.5162e-08	
+1300.000000	0.00017344	1300.000000	0.000200514	1300.000000	0.000197645	1300.000000	0.000197455	1300.000000	0.000200489	1300.000000	2.47988e-08	
+1320.000000	0.000173114	1320.000000	0.000200133	1320.000000	0.000197201	1320.000000	0.000197011	1320.000000	0.000200109	1320.000000	2.44463e-08	
+1340.000000	0.00017281	1340.000000	0.000199774	1340.000000	0.000196778	1340.000000	0.000196585	1340.000000	0.00019975	1340.000000	2.4104e-08	
+1360.000000	0.000172525	1360.000000	0.000199436	1360.000000	0.000196374	1360.000000	0.000196178	1360.000000	0.000199412	1360.000000	2.37714e-08	
+1380.000000	0.00017226	1380.000000	0.000199118	1380.000000	0.000195987	1380.000000	0.000195788	1380.000000	0.000199095	1380.000000	2.34481e-08	
+1400.000000	0.000172013	1400.000000	0.000198819	1400.000000	0.000195616	1400.000000	0.000195416	1400.000000	0.000198796	1400.000000	2.31338e-08	
+1420.000000	0.000171784	1420.000000	0.000198539	1420.000000	0.000195262	1420.000000	0.000195059	1420.000000	0.000198516	1420.000000	2.2828e-08	
+1440.000000	0.000171572	1440.000000	0.000198276	1440.000000	0.000194922	1440.000000	0.000194717	1440.000000	0.000198253	1440.000000	2.25304e-08	
+1460.000000	0.000171376	1460.000000	0.00019803	1460.000000	0.000194595	1460.000000	0.00019439	1460.000000	0.000198007	1460.000000	2.22408e-08	
+1480.000000	0.000171197	1480.000000	0.0001978	1480.000000	0.000194282	1480.000000	0.000194076	1480.000000	0.000197778	1480.000000	2.19587e-08	
+1500.000000	0.000171033	1500.000000	0.000197586	1500.000000	0.000193981	1500.000000	0.000193776	1500.000000	0.000197564	1500.000000	2.16838e-08	
+1520.000000	0.000170883	1520.000000	0.000197386	1520.000000	0.000193693	1520.000000	0.000193489	1520.000000	0.000197365	1520.000000	2.1416e-08	
+1540.000000	0.000170748	1540.000000	0.000197201	1540.000000	0.000193417	1540.000000	0.000193213	1540.000000	0.00019718	1540.000000	2.11549e-08	
+1560.000000	0.000170626	1560.000000	0.00019703	1560.000000	0.000193152	1560.000000	0.000192949	1560.000000	0.000197009	1560.000000	2.09003e-08	
+1580.000000	0.000170518	1580.000000	0.000196872	1580.000000	0.000192899	1580.000000	0.000192697	1580.000000	0.000196852	1580.000000	2.06519e-08	
+1600.000000	0.000170422	1600.000000	0.000196727	1600.000000	0.000192656	1600.000000	0.000192455	1600.000000	0.000196707	1600.000000	2.04096e-08	
+1620.000000	0.000170338	1620.000000	0.000196595	1620.000000	0.000192423	1620.000000	0.000192223	1620.000000	0.000196575	1620.000000	2.0173e-08	
+1640.000000	0.000170267	1640.000000	0.000196474	1640.000000	0.000192201	1640.000000	0.000192001	1640.000000	0.000196454	1640.000000	1.9942e-08	
+1660.000000	0.000170207	1660.000000	0.000196365	1660.000000	0.000191988	1660.000000	0.000191789	1660.000000	0.000196345	1660.000000	1.97164e-08	
+1680.000000	0.000170158	1680.000000	0.000196267	1680.000000	0.000191784	1680.000000	0.000191586	1680.000000	0.000196247	1680.000000	1.9496e-08	
+1700.000000	0.00017012	1700.000000	0.000196179	1700.000000	0.000191589	1700.000000	0.000191391	1700.000000	0.00019616	1700.000000	1.92806e-08	
+1750.000000	0.00017007	1750.000000	0.000196005	1750.000000	0.000191137	1750.000000	0.00019094	1750.000000	0.000195986	1750.000000	1.8763e-08	
+1800.000000	0.00017008	1800.000000	0.00019589	1800.000000	0.000190732	1800.000000	0.000190536	1800.000000	0.000195872	1800.000000	1.82732e-08	
+1850.000000	0.000170146	1850.000000	0.00019583	1850.000000	0.00019037	1850.000000	0.000190175	1850.000000	0.000195812	1850.000000	1.78091e-08	
+1900.000000	0.000170264	1900.000000	0.000195819	1900.000000	0.000190047	1900.000000	0.000189852	1900.000000	0.000195802	1900.000000	1.73686e-08	
+1950.000000	0.000170431	1950.000000	0.000195855	1950.000000	0.00018976	1950.000000	0.000189566	1950.000000	0.000195839	1950.000000	1.695e-08	
+2000.000000	0.000170642	2000.000000	0.000195934	2000.000000	0.000189504	2000.000000	0.000189311	2000.000000	0.000195918	2000.000000	1.65517e-08	
+2100.000000	0.000171189	2100.000000	0.000196209	2100.000000	0.00018908	2100.000000	0.000188889	2100.000000	0.000196193	2100.000000	1.58101e-08	
+2200.000000	0.000171883	2200.000000	0.000196621	2200.000000	0.000188756	2200.000000	0.000188566	2200.000000	0.000196606	2200.000000	1.51339e-08	
+2300.000000	0.000172709	2300.000000	0.000197152	2300.000000	0.000188516	2300.000000	0.000188326	2300.000000	0.000197138	2300.000000	1.45147e-08	
+2400.000000	0.000173651	2400.000000	0.000197789	2400.000000	0.000188346	2400.000000	0.000188158	2400.000000	0.000197775	2400.000000	1.39456e-08	
+2500.000000	0.000174699	2500.000000	0.000198517	2500.000000	0.000188238	2500.000000	0.00018805	2500.000000	0.000198504	2500.000000	1.34205e-08	
+2600.000000	0.00017584	2600.000000	0.000199327	2600.000000	0.00018818	2600.000000	0.000187994	2600.000000	0.000199314	2600.000000	1.29346e-08	
+2700.000000	0.000177067	2700.000000	0.000200209	2700.000000	0.000188167	2700.000000	0.000187982	2700.000000	0.000200197	2700.000000	1.24836e-08	
+2800.000000	0.000178372	2800.000000	0.000201156	2800.000000	0.000188192	2800.000000	0.000188007	2800.000000	0.000201143	2800.000000	1.20639e-08	
+2900.000000	0.000179749	2900.000000	0.00020216	2900.000000	0.00018825	2900.000000	0.000188065	2900.000000	0.000202148	2900.000000	1.16722e-08	
+3000.000000	0.00018119	3000.000000	0.000203215	3000.000000	0.000188336	3000.000000	0.000188152	3000.000000	0.000203204	3000.000000	1.13058e-08	
diff --git a/Inputs/EventGenerator/10He.reaction b/Inputs/EventGenerator/10He.reaction
index b305e585419bbdf367c5eb7d461e0a1e88b4cbd4..1987df73649f40bdf632faad34251b0c2a9d64b3 100644
--- a/Inputs/EventGenerator/10He.reaction
+++ b/Inputs/EventGenerator/10He.reaction
@@ -7,18 +7,19 @@ TransfertToResonance
 	Target= 2H
 	Light= 3He
 	Heavy= 10He
-	ExcitationEnergy= 1.0
+	ExcitationEnergy= 0.0
 	BeamEnergy= 550
 	BeamEnergySpread= 0
 	SigmaThetaX= 0.6921330164
 	SigmaPhiY= 0.963142053
 	SigmaX= 6.232
 	SigmaY= 9.069
-	ResonanceWidth= 1.3
+	ResonanceWidth= 0
 	ResonanceDecayZ= 2
 	ResonanceDecayA= 8
-	CrossSectionPath= 11Li(d,3He)10He.txt
+	CrossSectionPath= 11Li(d,3He)10He.txt	
 	ShootLight= 1
 	ShootHeavy= 0
 	ShootDecayProduct= 0
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/Inputs/EventGenerator/11Li.beam b/Inputs/EventGenerator/11Li.beam
index 9bc69caa7725561a700d467b617aced1d599c3eb..5a06c27989f836364fc4ee579144f4e531185245 100644
--- a/Inputs/EventGenerator/11Li.beam
+++ b/Inputs/EventGenerator/11Li.beam
@@ -7,7 +7,7 @@ Beam
 		ParticleZ= 3
 		ParticleA= 11
 		BeamEnergy= 550
-		BeamEnergySpread= 0
+		BeamEnergySpread= 10
 		SigmaX= 6.232
 		SigmaY= 9.069
 		SigmaThetaX= 0.6921330164
diff --git a/Inputs/EventGenerator/12Li.reaction b/Inputs/EventGenerator/12Li.reaction
new file mode 100644
index 0000000000000000000000000000000000000000..72e2d4fa12c490e0e612ca4b323998c56f50ed02
--- /dev/null
+++ b/Inputs/EventGenerator/12Li.reaction
@@ -0,0 +1,21 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Reaction file for 11Li(d,3He)10He reaction %%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Beam energy given in MeV ; Excitation in MeV ; SigmaXY in mm
+%  SigmaThetaX/PhiY in deg
+Transfert
+	Beam= 11Li
+	Target= 2H
+	Light= 1H
+	Heavy= 12Li
+	ExcitationEnergy= 1.0
+	BeamEnergy= 550
+	BeamEnergySpread= 0
+	SigmaThetaX= 0.6921330164
+	SigmaPhiY= 0.963142053
+	SigmaX= 6.232
+	SigmaY= 9.069
+	CrossSectionPath= flat.txt
+	ShootLight= 1
+	ShootHeavy= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Inputs/EventGenerator/132Sndp.reaction b/Inputs/EventGenerator/132Sndp.reaction
index 5bdb077e4d6f9240fe93c625687c05caedc0baf3..fd88541645b7aa52806ca9d3908786444a3768b9 100644
--- a/Inputs/EventGenerator/132Sndp.reaction
+++ b/Inputs/EventGenerator/132Sndp.reaction
@@ -10,8 +10,8 @@ Transfert
 	ExcitationEnergy= 0.0
 	BeamEnergy= 1320
 	BeamEnergySpread= 0
-	SigmaX= 2
-	SigmaY= 2
+	SigmaX= 0
+	SigmaY= 0
 	SigmaThetaX= 0 
 	SigmaPhiY= 0
 	CrossSectionPath= sn132dp_gs_10AMeV.txt
diff --git a/Inputs/EventGenerator/132SndpTestMarcIsotropic.reaction b/Inputs/EventGenerator/132SndpTestMarcIsotropic.reaction
new file mode 100644
index 0000000000000000000000000000000000000000..ccc4df42691cf921f4fc67a1b4b4fb64771b4932
--- /dev/null
+++ b/Inputs/EventGenerator/132SndpTestMarcIsotropic.reaction
@@ -0,0 +1,21 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%  Reaction file for 60Fe(d,p)61Fe reaction  %%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%Beam energy given in MeV ; Excitation in MeV ; emmitance in rad
+Transfert
+	Beam= 132Sn
+	Target= 2H
+	Light= 1H
+	Heavy= 133Sn
+	ExcitationEnergy= 0.0
+	BeamEnergy= 1320
+	BeamEnergySpread= 0
+	SigmaX= 0.851
+	SigmaY= 0.851
+	SigmaThetaX= 0 
+	SigmaPhiY= 0
+	CrossSectionPath= flat.txt
+	ShootLight= 1
+	ShootHeavy= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
diff --git a/Inputs/EventGenerator/3He.source b/Inputs/EventGenerator/3He.source
new file mode 100644
index 0000000000000000000000000000000000000000..8fa0b8698412b53f993a685d44e12862aabcb8ff
--- /dev/null
+++ b/Inputs/EventGenerator/3He.source
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%			   Energy are given in MeV , Position in mm				  %	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Isotropic
+	EnergyLow=  0	
+	EnergyHigh= 21.6
+	HalfOpenAngleMin= 0
+	HalfOpenAngleMax= 90
+	x0= 0	
+	y0= 0	
+	z0= 0	
+	particle= He3
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Supported particle type: proton, neutron, deuton, triton, He3 , alpha 
diff --git a/Inputs/EventGenerator/9He.reaction b/Inputs/EventGenerator/9He.reaction
new file mode 100644
index 0000000000000000000000000000000000000000..6b34ff1e06157af39bbd0354056b666dab70d0be
--- /dev/null
+++ b/Inputs/EventGenerator/9He.reaction
@@ -0,0 +1,21 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% Reaction file for 11Li(d,3He)10He reaction %%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Beam energy given in MeV ; Excitation in MeV ; SigmaXY in mm
+%  SigmaThetaX/PhiY in deg
+Transfert
+	Beam= 11Li
+	Target= 2H
+	Light= 4He
+	Heavy= 9He
+	ExcitationEnergy= 1.0
+	BeamEnergy= 550
+	BeamEnergySpread= 0
+	SigmaThetaX= 0.6921330164
+	SigmaPhiY= 0.963142053
+	SigmaX= 6.232
+	SigmaY= 9.069
+	CrossSectionPath= flat.txt
+	ShootLight= 1
+	ShootHeavy= 0
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Inputs/EventGenerator/alpha.source b/Inputs/EventGenerator/alpha.source
new file mode 100644
index 0000000000000000000000000000000000000000..fd5f19e5259addc2b6bbccaeb2e2bcb97b08b3e1
--- /dev/null
+++ b/Inputs/EventGenerator/alpha.source
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%			   Energy are given in MeV , Position in mm				  %	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Isotropic
+	EnergyLow= 0
+	EnergyHigh= 21.6
+	HalfOpenAngleMin= 0
+	HalfOpenAngleMax= 90
+	x0= 0	
+	y0= 0	
+	z0= 0	
+	particle= alpha
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Supported particle type: proton, neutron, deuton, triton, He3 , alpha 
diff --git a/Inputs/EventGenerator/deuton.source b/Inputs/EventGenerator/deuton.source
new file mode 100644
index 0000000000000000000000000000000000000000..28ff1666efb0e60e12de84c1f17689826b2553a7
--- /dev/null
+++ b/Inputs/EventGenerator/deuton.source
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%			   Energy are given in MeV , Position in mm				  %	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Isotropic
+	EnergyLow=  0	
+	EnergyHigh= 300
+	HalfOpenAngleMin= 0
+	HalfOpenAngleMax= 180
+	x0= 0	
+	y0= 0	
+	z0= 0	
+	particle= deuteron
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Supported particle type: proton, neutron, deuton, triton, He3 , alpha 
diff --git a/Inputs/EventGenerator/proton.source b/Inputs/EventGenerator/proton.source
new file mode 100644
index 0000000000000000000000000000000000000000..7d6828af14458abf06c597070fb1f298db90a9a8
--- /dev/null
+++ b/Inputs/EventGenerator/proton.source
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%			   Energy are given in MeV , Position in mm				  %	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Isotropic
+	EnergyLow=  0	
+	EnergyHigh= 300
+	HalfOpenAngleMin= 0
+	HalfOpenAngleMax= 180
+	x0= 0	
+	y0= 0	
+	z0= 0	
+	particle= proton
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Supported particle type: proton, neutron, deuton, triton, He3 , alpha 
diff --git a/Inputs/EventGenerator/triton.source b/Inputs/EventGenerator/triton.source
new file mode 100644
index 0000000000000000000000000000000000000000..1caa9f45a6eab9f1e03e8057f0a92eba88819889
--- /dev/null
+++ b/Inputs/EventGenerator/triton.source
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%% An Isotropic Source to be used as EventGenerator %%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%			   Energy are given in MeV , Position in mm				  %	
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+Isotropic
+	EnergyLow=  0	
+	EnergyHigh= 300
+	HalfOpenAngleMin= 0
+	HalfOpenAngleMax= 180
+	x0= 0	
+	y0= 0	
+	z0= 0	
+	particle= triton
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Supported particle type: proton, neutron, deuton, triton, He3 , alpha 
diff --git a/NPAnalysis/10He_Riken/Analysis b/NPAnalysis/10He_Riken/Analysis
deleted file mode 100755
index 7a15c0ec1ee2c7c99032279403bdbfc030232674..0000000000000000000000000000000000000000
Binary files a/NPAnalysis/10He_Riken/Analysis and /dev/null differ
diff --git a/NPAnalysis/10He_Riken/include/DetectorManager.hh b/NPAnalysis/10He_Riken/include/DetectorManager.hh
deleted file mode 100644
index eb49f01ef92509cd0531f4f12c7eace833047e61..0000000000000000000000000000000000000000
--- a/NPAnalysis/10He_Riken/include/DetectorManager.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef DetectorManager_h
-#define DetectorManager_h
-
-//	NPL
-#include "VDetector.h"
-
-//	STL
-#include <string>
-#include <map>
-
-using namespace std ;
-using namespace NPA ;
-
-// This class manage a map of virtual detector
-
-class DetectorManager
-	{
-		public:
-			DetectorManager()		;
-			~DetectorManager()		;
-			
-		public:
-			//	Read stream at Path and pick-up Token declaration of Detector
-			void	ReadConfigurationFile(string Path)	;
-			void	BuildPhysicalEvent()				;
-			void	BuildSimplePhysicalEvent()			;
-			void	InitializeRootInput()				;
-			void	InitializeRootOutput()				;
-			void	AddDetector(string,VDetector*)		;
-			void	ClearEventPhysics()					;
-			void	ClearEventData()					;
-
-		public:	//	The map containning all detectors
-			//	Using a Map one can access to any detector using its name
-			map<string,VDetector*>	m_Detector	;
-				
-	};
-
-#endif 
diff --git a/NPAnalysis/10He_Riken/include/ObjectManager.hh b/NPAnalysis/10He_Riken/include/ObjectManager.hh
index 8d2739151bf089ed4af970bb3bb3d7f29cc583e0..336fb8c7142848ae3f053a591911a9684948e3f2 100644
--- a/NPAnalysis/10He_Riken/include/ObjectManager.hh
+++ b/NPAnalysis/10He_Riken/include/ObjectManager.hh
@@ -6,8 +6,7 @@
 // -------------------------------------- VARIOUS INCLUDE ---------------------------------------
 
 // NPA
-#include "DetectorManager.hh"
-#include "Must2Array.h"
+#include "DetectorManager.h"
 
 // STL C++
 #include <iostream>
@@ -16,6 +15,7 @@
 #include <string>
 #include <cmath>
 #include <cstdlib>
+#include <time.h>
 
 // ROOT
 #include <TROOT.h>
@@ -26,12 +26,14 @@
 #include <TRandom.h>
 
 // NPL
-#include "TMust2Data.h"
-#include "TMust2Physics.h"
+#include "TPlasticData.h"
 #include "NPReaction.h"
 #include "RootInput.h"
 #include "RootOutput.h"
 #include "TInitialConditions.h"
+#include "TMust2Physics.h"
+#include "TSSSDPhysics.h"
+#include "TPlasticPhysics.h"
 
 // Use CLHEP System of unit and Physical Constant
 #include "CLHEP/Units/GlobalSystemOfUnits.h"
@@ -104,41 +106,68 @@ using namespace NPL ;
 namespace ENERGYLOSS
 	{
 	
-		//	3He Energy Loss
-			EnergyLoss He3TargetWind = EnergyLoss 	(	"3He_Mylar.txt" 		,
-														1000	 				,
-														1						,
-														3						);
+	
+	//	3He Energy Loss
+			EnergyLoss He3TargetWind = EnergyLoss 	(	"He3_Mylar.G4table" 		,
+																								"G4Table",
+																									10000	 				);
 		
-			EnergyLoss He3TargetGaz = EnergyLoss 	(	"3He_D2gaz_1b_26K.txt" 	,
-														1000	 				,
-														1						,
-														3						);
+			EnergyLoss He3TargetGaz = EnergyLoss 		(	"He3_D2.G4table" 	,
+																								"G4Table",
+																									10000	 				);
 			
 			EnergyLoss He3StripAl   = EnergyLoss 	(	"3He_Al.txt" 			,
-														10						,
-														1						,
-														3						);
+																							"LISE",
+																							10000						,
+																							1						,
+																							3						);
 														
 			EnergyLoss He3StripSi   = EnergyLoss 	(	"3He_Si.txt" 			,
-														10						,
-														1						,
-														3						);
+																							"LISE",
+																							10000						,
+																							1					,
+																							3						);
+														
+
+	
+//		//	3He Energy Loss
+//			EnergyLoss He3TargetWind = EnergyLoss 	(	"3He_Mylar.txt" 		,
+//														10000	 				,
+//														1					,
+//														3						);
+//		
+//			EnergyLoss He3TargetGaz = EnergyLoss 	(	"3He_D2gaz_1b_26K.txt" 	,
+//														10000	 				,
+//														1						,
+//														3						);
+//			
+//			EnergyLoss He3StripAl   = EnergyLoss 	(	"3He_Al.txt" 			,
+//														10000						,
+//														1						,
+//														3						);
+//														
+//			EnergyLoss He3StripSi   = EnergyLoss 	(	"3He_Si.txt" 			,
+//														10000						,
+//														1					,
+//														3						);
 														
 														
 		//	proton Energy Loss
 			EnergyLoss protonTargetWind = EnergyLoss 	(	"proton_Mylar.txt"	 		,
+															"LISE",
 															1000		 				,
-															1							,
+															1						,
 															1							);
 		
 			EnergyLoss protonTargetGaz = EnergyLoss 	(	"proton_D2gaz_1b_26K.txt" 	,
+																"LISE",
 															1000		 				,
-															1							,
+															1						,
 															1							);
 			
 			EnergyLoss protonStripAl   = EnergyLoss 	(	"proton_Al.txt" 			,
-															10							,
+															"LISE",
+															100							,
 															1							,
 															1							);
 														
diff --git a/NPAnalysis/10He_Riken/src/Analysis.cc b/NPAnalysis/10He_Riken/src/Analysis.cc
index b51e713f1c3a6e1c1131ddf4364b57db83f84a74..ed1a372c4b79fa6f9a43e552785d8beb9bd4eb98 100644
--- a/NPAnalysis/10He_Riken/src/Analysis.cc
+++ b/NPAnalysis/10He_Riken/src/Analysis.cc
@@ -13,196 +13,254 @@ int main(int argc,char** argv)
 			return 0;
 		} 
 	
-	string reactionfileName 	= argv[1]	;
-	string detectorfileName 	= argv[2]	;
-	string runToReadfileName 	= argv[3]	;
+	string detectorfileName 		= argv[1]	;
+	string calibrationfileName 	= argv[2]	;
+	string runToReadfileName 		= argv[3]	;
 	
 	//	First of All instantiate RootInput and Output
 	//	Detector will be attached later
 	RootInput:: getInstance(runToReadfileName)	;
 	RootOutput::getInstance("Analysis/10HeRiken_AnalyzedData", "AnalyzedTree")					;
 	
-	//	Instantiate a Reaction
-	NPL::Reaction* myReaction = new Reaction					;
-	myReaction	->	ReadConfigurationFile(reactionfileName)		;
+	//	Instantiate some Reaction
+	NPL::Reaction*  He10Reaction = new Reaction								;
+	He10Reaction	->	ReadConfigurationFile("10He.reaction")	;
 
-		//	Instantiate the detector using a file 
-	DetectorManager* myDetector = new DetectorManager 			;
+	NPL::Reaction*  Li10Reaction = new Reaction								;
+	Li10Reaction	->	ReadConfigurationFile("9Li-dp-10Li.reaction")		;
+
+	//	Instantiate the detector using a file 
+	NPA::DetectorManager* myDetector = new DetectorManager 			  ;
 	myDetector	->	ReadConfigurationFile(detectorfileName)		;
+
+	//	Instantiate the Calibration Manger using a file
+	CalibrationManager* myCalibration = new CalibrationManager(calibrationfileName) ;
 	
 	//	Attach more branch to the output
-	double ThinSi=-1 ;double Ex = 0 ; double EE = 0 ; double TT = 0 ; double X = 0 ; double Y = 0 ; int det ; double ResolThetaCM=0;
-	double ThetaCM=0;
-	RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergy",&Ex,"Ex/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("E",&EE,"EE/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("A",&TT,"TT/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("Y",&Y,"Y/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("ThinSi_E",&ThinSi,"ThinSi/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("ThetaCM",&ThetaCM,"ThetaCM/D") ;
-	RootOutput::getInstance()->GetTree()->Branch("ResolThetaCM",&ResolThetaCM,"ResolThetaCM/D") ;
+	
+	double ELab[2], ExcitationEnergy[2]	;
+	double ThetaLab[2]	, ThetaCM[2]		;
+	double X[2] , Y[2] 									;
+
+	// Exitation Energy
+	RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergy",ExcitationEnergy,"ExcitationEnergy[2]/D") ;
+
+	//E lab et Theta lab
+	RootOutput::getInstance()->GetTree()->Branch("ThetaCM",ThetaCM,"ThetaCM[2]/D") 	;
+	RootOutput::getInstance()->GetTree()->Branch("ELab",ELab,"ELab[2]/D") 					;
+	RootOutput::getInstance()->GetTree()->Branch("ThetaLab",ThetaLab,"ThetaLab[2]/D") 					;
+	RootOutput::getInstance()->GetTree()->Branch("X",X,"X/D[2]") 										;
+	RootOutput::getInstance()->GetTree()->Branch("Y",Y,"Y/D[2]")									 	;
+	
+	
 	//	Get the formed Chained Tree and Treat it
 	TChain* Chain = RootInput:: getInstance() -> GetChain()	;
- 	   
+
 	// Open the ThinSi Branch
-	Chain->SetBranchStatus("ThinSiEnergy",true)	;
 	Chain->SetBranchStatus("InitialConditions",true)	;
 	Chain->SetBranchStatus("fIC_*",true)	; 
- 
-	 TInitialConditions* Init = new TInitialConditions();
-	Chain->SetBranchAddress("ThinSiEnergy"		,&ThinSi	);
+ 		
+	TInitialConditions* Init = new TInitialConditions();
 	Chain->SetBranchAddress("InitialConditions"	,&Init		);
 	
-	
- double XTarget=0 ; double YTarget=0; double BeamTheta = 0 ; double BeamPhi = 0 ; double E=-1000;
+ 	double XTarget=0 ; double YTarget=0; double BeamTheta = 0 ; double BeamPhi = 0 ; double E=-1000;
 
-	// Get Must2 Pointer:
-	MUST2Array* M2 = (MUST2Array*) myDetector -> m_Detector["MUST2"] ;
+	// Get Detector Pointer:
+	TMust2Physics* M2 		= (TMust2Physics*) 			myDetector -> m_Detector["MUST2"] 	;
+	TPlasticPhysics* Pl 	= (TPlasticPhysics*) 		myDetector -> m_Detector["Plastic"] ;
+	TSSSDPhysics* ThinSi 	= (TSSSDPhysics*) 			myDetector -> m_Detector["SSSD"] 		;
+	cout <<  " ///////// Starting Analysis ///////// "<< endl << endl ;
+	
+	int i ,N=Chain -> GetEntries();
+	
+	cout << " Number of Event to be treated : " << N << endl ;
 	
-	int i;
-	for ( i = 0 ; i < Chain -> GetEntries() ; i ++ )
+	clock_t begin=clock();
+	clock_t end=begin;
+	for ( i = 0 ; i < N ; i ++ )
 		{
-			if( i%10000 == 0 && i!=0) cout << i << " Event annalysed " << endl ;						
+			// Clear local branch
+			for(int hh = 0 ; hh <2 ; hh++)
+				{
+					ELab[hh] = -1 	; ExcitationEnergy[hh] = -1 ; ThetaLab[hh] = -1 ;	
+					X[hh]	 = -1000	; Y[hh]					= -1000 ; ThetaCM[hh]  = -1 ;
+				}
+
+			// Minimum code
+			if( i%10000 == 0 && i!=0) 	{	
+											cout.precision(5);
+											end=clock();										
+											double TimeElapsed = (end-begin)/CLOCKS_PER_SEC;
+											double percent = (double)i/N ;
+											double TimeToWait = (TimeElapsed/percent) - TimeElapsed	;					
+											cout << "\r Progression:" << percent*100 
+												 << " % \t | \t Remaining time : ~" 
+												 <<  TimeToWait <<"s"<< flush;
+										}	
+										
+			else if (i==N-1) 	cout << "\r Progression:" 
+								 << " 100% " <<endl;
+					
 			Chain -> GetEntry(i);
+			// Clear Previous Event
 			myDetector -> ClearEventPhysics()				;
+			// Build the new one
 			myDetector -> BuildPhysicalEvent()				;
+			////
+			
 			
-			E = M2 -> GetEnergyDeposit();
-			XTarget = Init->GetICPositionX(0);
-			YTarget = Init->GetICPositionY(0);
-//			XTarget = RandomEngine.Gaus(Init->GetICPositionX(0),1);
-//			YTarget = RandomEngine.Gaus(Init->GetICPositionY(0),1);
 			
-			TVector3 HitDirection  = M2 -> GetPositionOfInteraction() - TVector3(XTarget,YTarget,0);
 			
-//			BeamTheta = RandomEngine.Gaus( Init->GetICIncidentAngleTheta(0)*deg , 2*deg ) ;
-//			BeamPhi   = RandomEngine.Gaus( Init->GetICIncidentAnglePhi(0)*deg   , 2*deg ) ;
-			 
+			// Target (from initial condition)
+			XTarget = Init->GetICPositionX(0);
+			YTarget = Init->GetICPositionY(0);
+			//	XTarget = RandomEngine.Gaus(Init->GetICPositionX(0),1);
+			//	YTarget = RandomEngine.Gaus(Init->GetICPositionY(0),1);
 			BeamTheta = Init->GetICIncidentAngleTheta(0)*deg ; BeamPhi = Init->GetICIncidentAnglePhi(0)*deg ; 
-
-			TVector3 BeamDirection = TVector3(cos(BeamPhi)*sin(BeamTheta) , sin(BeamPhi)*sin(BeamTheta) , cos(BeamTheta)) ;	
-			// Angle between beam and particle
-			double Theta  = ThetaCalculation ( HitDirection , BeamDirection   ) ;				
-			// Angle between particule and z axis (target Normal)
-			double ThetaN = ThetaCalculation ( HitDirection , TVector3(0,0,1) ) ;
-			// ANgle between particule and Must2 Si surface
-			double ThetaMM2Surface = ThetaCalculation ( HitDirection , M2 -> GetTelescopeNormal() );
-			if(M2 -> GetPositionOfInteraction().Z()>0)
+			TVector3 BeamDirection = TVector3(cos(BeamPhi)*sin(BeamTheta) , sin(BeamPhi)*sin(BeamTheta) , cos(BeamTheta)) ;
+			////
+			
+			// Must 2 And ThinSi //
+			//for(int hit = 0; hit < M2 -> GetEventMultiplicity() ; hit ++)
+			for(int hit = 0; hit < M2 -> Si_E.size() ; hit ++)
 				{
-					if(E>-1000 && ThinSi>0 )	
-					{
-							E= He3StripAl.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																	2*0.4*micrometer	, // Target Thickness at 0 degree
-																	ThetaMM2Surface		);
-																	
-							E= He3StripSi.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																	20*micrometer		, // Target Thickness at 0 degree
-																	ThetaMM2Surface		);																
-						
-//							E = E + ThinSi ;
-							
-							E= He3StripAl.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																	0.4*micrometer		, // Target Thickness at 0 degree
-																	ThetaMM2Surface		);
+					ELab[hit] = -1 ; ThetaLab[hit] = -1;
+					//	Get Hit Direction
+					TVector3 HitDirection  = M2 -> GetPositionOfInteraction(hit) - TVector3(XTarget,YTarget,0);
+					
+					// Angle between beam and particle
+					ThetaLab[hit]  = ThetaCalculation ( HitDirection , BeamDirection   ) ;				
+					// Angle between particule and z axis (target Normal)
+					double ThetaN = ThetaCalculation ( HitDirection , TVector3(0,0,1) ) ;
+					// ANgle between particule and Must2 Si surface
+					double ThetaMM2Surface = ThetaCalculation ( HitDirection , M2 -> GetTelescopeNormal(hit) );
 
-						//	cout << E << "  " << Eb-E << " " << ThinSi << endl ;
+					if(M2 -> GetPositionOfInteraction(hit).Z() > 0)
+						{
+							if( M2 -> CsI_E[hit] == 0 && M2 -> Si_E[hit] > 0)
+								{  
+										ELab[hit] = M2 -> Si_E[hit]  ; 
+										
+										ELab[hit]= He3StripAl.EvaluateInitialEnergy(		ELab[hit] 				, // Energy of the detected particle
+																																		2*0.4*micrometer	, // Target Thickness at 0 degree
+																																		ThetaMM2Surface		);
 
-							E= He3TargetWind.EvaluateInitialEnergy( 		E 					, // Energy of the detected particle
-																	 		15*micrometer		, // Target Thickness at 0 degree
-																			ThetaN				);
-																
-							E= He3TargetGaz.EvaluateInitialEnergy(			E 					, // Energy of the detected particle
-																			1.5*mm				, // Target Thickness at 0 degree
-																			ThetaN				);
+																														
+//										ELab[hit]= He3StripSi.EvaluateInitialEnergy(		ELab[hit] 				, // Energy of the detected particle
+//																																		20*micrometer			, // Target Thickness at 0 degree
+//																																		ThetaMM2Surface		);																
+										
+										if(ThinSi -> Energy.size() > 0)ELab[hit] += ThinSi-> Energy[hit];
+										
+										ELab[hit]= He3StripAl.EvaluateInitialEnergy(		ELab[hit] 				, // Energy of the detected particle
+																																		0.4*micrometer		, // Target Thickness at 0 degree
+																																		ThetaMM2Surface		);
+
+										ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] 				, // Energy of the detected particle
+																																		15*micrometer			, // Target Thickness at 0 degree
+																																		ThetaN						);
 																			
-						ThetaCM = myReaction -> EnergyLabToThetaCM( E , 1 ) /deg 	;
-						ResolThetaCM =ThetaCM - Init->GetICEmittedAngleThetaCM(0) 	;
-						Ex = myReaction -> ReconstructRelativistic( E , Theta ) 	;	
-						X = HitDirection . X();
-						Y = HitDirection . Y();	
-					}
-
-				else if(E>-1000 )
-					{
-					if(E>18)//CsI are inside a Mylar foil, plus rear alu strip
-					{
-	//					E= He3TargetWind.EvaluateInitialEnergy( E 					, // Energy of the detected particle
-	//															3*micrometer		, // Target Thickness at 0 degree
-	//															ThetaMM2Surface		);
-						E= He3StripAl.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																0.4*micrometer		, // Target Thickness at 0 degree
-																ThetaMM2Surface		);
-					}
-				
-					E= He3StripAl.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-															0.4*micrometer		, // Target Thickness at 0 degree
-															ThetaMM2Surface		);
-				
-					E= He3TargetWind.EvaluateInitialEnergy( E 					, // Energy of the detected particle
-															15*micrometer		, // Target Thickness at 0 degree
-															ThetaN				);
-					
-					E= He3TargetGaz.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-															1.5*mm				, // Target Thickness at 0 degree
-															ThetaN				);
-					ThetaCM = myReaction -> EnergyLabToThetaCM( E , 1 ) /deg 	;	
-					Ex = myReaction -> ReconstructRelativistic( E, Theta ) ;	
-					X = HitDirection . X();
-					Y = HitDirection . Y();	
-					
-					}	
-					
-				else {Ex=-100 ; X = -100 ; Y = -100 ;}
-				
-				}
-				
-			if(M2 -> GetPositionOfInteraction().Z()<0)
-				{
-					
-				if(E>-1000 )
-					{
-						if(E>18)
-							{
-								E= protonStripAl.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																		0.4*micrometer		, // Target Thickness at 0 degree
-																		ThetaMM2Surface		);
-							}
-					
-						E= protonStripAl.EvaluateInitialEnergy(		E 					, // Energy of the detected particle
-																	0.4*micrometer		, // Target Thickness at 0 degree
-																	ThetaMM2Surface		);
+										ELab[hit]= He3TargetGaz.EvaluateInitialEnergy(	ELab[hit] 				, // Energy of the detected particle
+																																		1.5*mm						, // Target Thickness at 0 degree
+																																		ThetaN						);
+																		 				
+									ThetaCM[hit] = He10Reaction -> EnergyLabToThetaCM( ELab[hit] ) /deg 	;
+									ExcitationEnergy[hit] = He10Reaction -> ReconstructRelativistic( ELab[hit] , ThetaLab[hit] ) 		;	
+									X[hit] = HitDirection . X();
+									Y[hit] = HitDirection . Y();	
+									ThetaLab[hit] = ThetaLab[hit] / deg ;
+								}
+ 
+							else if(M2 ->CsI_E[hit] > 0 && M2 -> Si_E[hit] > 0)
+								{
 					
-						E= protonTargetWind.EvaluateInitialEnergy( 	E 					, // Energy of the detected particle
-																	15*micrometer		, // Target Thickness at 0 degree
-																	ThetaN				);
+									ELab[hit]= M2 ->CsI_E[hit] ;
+								
+									ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] 					, // Energy of the detected particle
+																																	3*micrometer				, // Target Thickness at 0 degree
+																																	ThetaMM2Surface			);
+																																	
+									ELab[hit]= He3StripAl.EvaluateInitialEnergy(		ELab[hit] 					, // Energy of the detected particle
+																																	0.4*micrometer			, // Target Thickness at 0 degree
+																																	ThetaMM2Surface			);
+									ELab[hit]+= M2 ->Si_E[hit];
+									
+									ELab[hit]= He3StripAl.EvaluateInitialEnergy(		ELab[hit] 					, // Energy of the detected particle
+																																	0.4*micrometer			, // Target Thickness at 0 degree
+																																	ThetaMM2Surface			);
+								
+									if(ThinSi -> Energy.size() > 0)ELab[hit] += ThinSi-> Energy[hit];
+									
+									
+									ELab[hit]= He3StripAl.EvaluateInitialEnergy(		ELab[hit] 					, // Energy of the detected particle
+																																	0.4*micrometer			, // Target Thickness at 0 degree
+																																	ThetaMM2Surface			);
+								
+									ELab[hit]= He3TargetWind.EvaluateInitialEnergy( ELab[hit] 					, // Energy of the detected particle
+																																	15*micrometer				, // Target Thickness at 0 degree
+																																	ThetaN							);
+									
+									ELab[hit]= He3TargetGaz.EvaluateInitialEnergy(	ELab[hit] 					, // Energy of the detected particle
+																																	1.5*mm							, // Target Thickness at 0 degree
+																																	ThetaN							);
+																				
+									ThetaCM[hit]= He10Reaction -> EnergyLabToThetaCM( ELab[hit] ) /deg 	;	
+									ExcitationEnergy[hit] = He10Reaction -> ReconstructRelativistic( ELab[hit], ThetaLab[hit] ) ;	
+									X[hit] = HitDirection . X();
+									Y[hit] = HitDirection . Y();	
+									ThetaLab[hit] = ThetaLab[hit] / deg ;
+								}	
+							
+						else {ExcitationEnergy[hit]=-100 ; X[hit] = -100 ; Y[hit]= -100 ; ThetaLab[hit]=-100;ThetaCM[hit]=-100;}
 						
-						E= protonTargetGaz.EvaluateInitialEnergy(	E 					, // Energy of the detected particle
-																	1.5*mm				, // Target Thickness at 0 degree
-																	ThetaN				);
-						ThetaCM = myReaction -> EnergyLabToThetaCM( E , 1 ) /deg 	;	
-						Ex = myReaction -> ReconstructRelativistic( E, Theta ) ;	
-						X = HitDirection . X();
-						Y = HitDirection . Y();	
-					
-					}	
-					
-				else {Ex=-100 ; X = -100 ; Y = -100 ;}
-				
-				}	
-				
+						}
+						
+					/*else if(M2 -> GetPositionOfInteraction(hit).Z()<0)
+						{
+							
+						if(ELab[hit]>-1000 )
+							{
+								if(ELab[hit]>18)
+									{
+										ELab[hit]= protonStripAl.EvaluateInitialEnergy(	ELab[hit] 					, // Energy of the detected particle
+																				0.4*micrometer		, // Target Thickness at 0 degree
+																				ThetaMM2Surface		);
+									}
+							
+								ELab[hit]= protonStripAl.EvaluateInitialEnergy(		ELab[hit]					, // Energy of the detected particle
+																			0.4*micrometer		, // Target Thickness at 0 degree
+																			ThetaMM2Surface		);
+							
+								ELab[hit]= protonTargetWind.EvaluateInitialEnergy( 	ELab[hit] 					, // Energy of the detected particle
+																			15*micrometer		, // Target Thickness at 0 degree
+																			ThetaN				);
 								
-			EE = E ; TT = Theta/deg ;
+								ELab[hit]= protonTargetGaz.EvaluateInitialEnergy(	ELab[hit] 					, // Energy of the detected particle
+																			1.5*mm				, // Target Thickness at 0 degree
+																			ThetaN				);
+								ThetaCM[hit] = myReaction -> EnergyLabToThetaCM( ELab[hit] , 1 ) /deg 	;	
+								ExcitationEnergy[hit] = myReaction -> ReconstructRelativistic( ELab[hit], ThetaLab[hit] ) ;	
+								X[hit] = HitDirection . X();
+								Y[hit] = HitDirection . Y();	
+								ThetaLab[hit] = ThetaLab[hit] / deg ;
+							}	
+							
+						else {ExcitationEnergy[hit]=-100 ; X[hit] = -100 ; Y[hit] = -100 ;ThetaLab[hit]=-100; ThetaCM[hit]=-100 ;}
+						
+						}	*/
+
+
+				}			
 			
 			RootOutput::getInstance()->GetTree()->Fill()	;
-			ThinSi = -1 ;
 		}
-	cout << "A total of " << i << " event has been annalysed " << endl ;
-	
+
+	cout << " A total of " << i << " event has been annalysed " << endl ;
+	cout << endl << " ///////////////////////////////////// "<< endl<< endl ;
 	RootOutput::getInstance()->Destroy();
 	return 0	;
 }
 
-
 double ThetaCalculation (TVector3 A , TVector3 B)
 	{
 		double Theta = acos( (A.Dot(B)) / (A.Mag()*B.Mag()) ) ;
diff --git a/NPAnalysis/10He_Riken/src/DetectorManager.cc b/NPAnalysis/10He_Riken/src/DetectorManager.cc
deleted file mode 100644
index 000d61fe3827077359d77aa4c4f2af460364fbfd..0000000000000000000000000000000000000000
--- a/NPAnalysis/10He_Riken/src/DetectorManager.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "DetectorManager.hh"
-
-//	STL
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-//	Detector	
-#include "Must2Array.h"
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Default Constructor and Destructor
-DetectorManager::DetectorManager()	
-	{}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-DetectorManager::~DetectorManager()
-	{}
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Read stream at ConfigFile and pick-up Token declaration of Detector
-void	DetectorManager::ReadConfigurationFile(string Path)	
-	{
-		////////General Reading needs////////
-	   string LineBuffer;
-	   string DataBuffer;
-
-	   /////////Boolean////////////////////
-	   bool MUST2           = false  ;
-	   bool AddThinSi       = false  ;
-	   bool GeneralTarget   = false  ;
-	   bool GPDTracker      = false  ;	// Gaspard Tracker
-	   //////////////////////////////////////////////////////////////////////////////////////////
-	   // added by Nicolas [07/05/09]
-	   string GlobalPath = getenv("NPTOOL");
-	   Path = GlobalPath + "/Inputs/DetectorConfiguration/" + Path;
-	   ifstream ConfigFile;
-	   ConfigFile.open(Path.c_str());
-
-	   if (ConfigFile.is_open())
-	   	{
-	   		cout << "/////////////////////////////" << endl;
-	      	cout << " Configuration file " << Path << " loading " << endl;
-	   	}	
-	   	
-	   else 
-	   	{
-	      cout << " Error, no configuration file" << Path << " found" << endl;
-	      return;
-	   	}
-
-
-	   while (!ConfigFile.eof()) {
-	      //Pick-up next line
-	      getline(ConfigFile, LineBuffer);
-	      //Search for comment Symbol: %
-	      if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/ ;}
-
-	    /*  ////////////////////////////////////////////
-	      //////////// Search for Gaspard ////////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
-	         GPDTracker = true ;
-	         cout << "//////// Gaspard Tracker ////////" << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new GaspardTracker()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector(myDetector)                            ;
-	      }*/
-
-	      ////////////////////////////////////////////
-	      //////// Search for MUST2 Array  ////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
-	         MUST2 = true ;
-	         cout << "//////// MUST2 Array ////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new MUST2Array()                 ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector("MUST2" , myDetector)                               ;
-	      }
-
-	/*      ////////////////////////////////////////////
-	      ////////// Search for Add.ThinSi ///////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
-	         AddThinSi = true ;
-	         cout << "//////// Thin Si ////////" << endl << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new ThinSi()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector(myDetector)                            ;
-	      }
-
-	      ////////////////////////////////////////////
-	      //////////// Search for Target /////////////
-	      ////////////////////////////////////////////
-
-	      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
-	         GeneralTarget = true ;
-	         cout << "////////// Target ///////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Objects
-	         VDetector* myDetector = new Target()                     ;
-
-	         // Read Position and target specification
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         m_TargetThickness = ((Target*)myDetector)->GetTargetThickness()   ;
-	         m_TargetRadius    = ((Target*)myDetector)->GetTargetRadius()   ;
-	         m_TargetX        = ((Target*)myDetector)->GetTargetX()         ;
-	         m_TargetY        = ((Target*)myDetector)->GetTargetY()         ;
-	         m_TargetZ        = ((Target*)myDetector)->GetTargetZ()         ;
-
-	         // Add target to the VDetector Vector
-	         AddDetector(myDetector)                               ;
-	      }*/
-
-	      //Nothing understandable
-	      //else ;
-	   }
-
-		ConfigFile.close();
-		
-		InitializeRootInput();
-		InitializeRootOutput();
-		
-		return   ;
-	}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::BuildPhysicalEvent()						
-	{	
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildPhysicalEvent()	;	
-			}           
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::BuildSimplePhysicalEvent()					
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildSimplePhysicalEvent()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::InitializeRootInput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootInput()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::InitializeRootOutput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootOutput()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::AddDetector(string DetectorName , VDetector* newDetector)	
-	{
-		m_Detector["MUST2"] = newDetector ;
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventPhysics()	
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventPhysics()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventData()
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventData()	;	
-			}   
-		
-	}
-			
diff --git a/NPAnalysis/10He_Riken/src/GNUmakefile b/NPAnalysis/10He_Riken/src/GNUmakefile
index 15a9a7a10e9dc1d50489b0a14210d6697621466d..28c404622cec4d40b2e93aa0009fc4fc4fa97d26 100644
--- a/NPAnalysis/10He_Riken/src/GNUmakefile
+++ b/NPAnalysis/10He_Riken/src/GNUmakefile
@@ -16,10 +16,7 @@ CXXFLAGS += -I$(NPAINCLUDES)
 CXXFLAGS += -I$(NPLIB)/include
 
 LDFLAGS  = `root-config --libs` -lMathMore
-LDFLAGS+= -L$(NPLIB)/lib -lVDetector -lIORoot -lReaction -lEnergyLoss \
-			-lMust2Data -lMust2Physics \
-			-lAnnularS1Data -lGaspardData \
-			-lInitialConditions -lInteractionCoordinates
+LDFLAGS+= `$(NPLIB)/liblist`
 LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) 
 
 SRC= $(wildcard *.cc)
diff --git a/NPAnalysis/Gaspard/RunToTreat.txt b/NPAnalysis/Gaspard/RunToTreat.txt
index 008354fd1b9fa2d1c15477a463be1e2bf76a6b7e..5e6a3389381c7b3d88643f0ffc3311d201f72d07 100644
--- a/NPAnalysis/Gaspard/RunToTreat.txt
+++ b/NPAnalysis/Gaspard/RunToTreat.txt
@@ -2,3 +2,4 @@ TTreeName
 	SimulatedTree
 RootFileName 
 	../../Outputs/Simulation/mySimul.root
+%	../../Outputs/Simulation/sn132dp_10MeVA_T1_B0_E0.root
diff --git a/NPAnalysis/Gaspard/include/DetectorManager.hh b/NPAnalysis/Gaspard/include/DetectorManager.hh
deleted file mode 100644
index eb49f01ef92509cd0531f4f12c7eace833047e61..0000000000000000000000000000000000000000
--- a/NPAnalysis/Gaspard/include/DetectorManager.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef DetectorManager_h
-#define DetectorManager_h
-
-//	NPL
-#include "VDetector.h"
-
-//	STL
-#include <string>
-#include <map>
-
-using namespace std ;
-using namespace NPA ;
-
-// This class manage a map of virtual detector
-
-class DetectorManager
-	{
-		public:
-			DetectorManager()		;
-			~DetectorManager()		;
-			
-		public:
-			//	Read stream at Path and pick-up Token declaration of Detector
-			void	ReadConfigurationFile(string Path)	;
-			void	BuildPhysicalEvent()				;
-			void	BuildSimplePhysicalEvent()			;
-			void	InitializeRootInput()				;
-			void	InitializeRootOutput()				;
-			void	AddDetector(string,VDetector*)		;
-			void	ClearEventPhysics()					;
-			void	ClearEventData()					;
-
-		public:	//	The map containning all detectors
-			//	Using a Map one can access to any detector using its name
-			map<string,VDetector*>	m_Detector	;
-				
-	};
-
-#endif 
diff --git a/NPAnalysis/Gaspard/include/ObjectManager.hh b/NPAnalysis/Gaspard/include/ObjectManager.hh
index 87249677afccc0f2904ba9a871236176453ee7af..191fc0ab66fa0f75d2115fa8faa9cfe640da111a 100644
--- a/NPAnalysis/Gaspard/include/ObjectManager.hh
+++ b/NPAnalysis/Gaspard/include/ObjectManager.hh
@@ -6,7 +6,7 @@
 // -------------------------------------- VARIOUS INCLUDE ---------------------------------------
 
 // NPA
-#include "DetectorManager.hh"
+#include "DetectorManager.h"
 #include "GaspardTracker.h"
 
 // STL C++
@@ -102,15 +102,13 @@ using namespace CUT ;
 #include "NPEnergyLoss.h"
 using namespace NPL ;
 namespace ENERGYLOSS
-	{
-	
-		//	Declare your Energy loss here	:
-	/*		EnergyLoss ProtonTarget = EnergyLoss 	(	"CD2.txt" 	,
-														100 		,
-														1			);
-	*/
-	}
-	
+{
+   // Declare your Energy loss here
+//   EnergyLoss LightTargetCD2 = EnergyLoss("proton_cd2.txt", 100, 1, 1); // LISE++
+   EnergyLoss LightTarget = EnergyLoss("proton_CD2.G4table", 100);	// G4
+//   EnergyLoss BeamTarget = EnergyLoss("proton_CD2.G4table", 100);	// G4
+}
+
 using namespace ENERGYLOSS ;
 // ----------------------------------------------------------------------------------------------
 /////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/NPAnalysis/Gaspard/src/Analysis.cc b/NPAnalysis/Gaspard/src/Analysis.cc
index 8e4125f0c3da2b5d3ee6dfb94cbf727d318edf8f..de68ee321311d095603b63d79429405bd6c92e7c 100644
--- a/NPAnalysis/Gaspard/src/Analysis.cc
+++ b/NPAnalysis/Gaspard/src/Analysis.cc
@@ -26,13 +26,20 @@ int main(int argc,char** argv)
    NPL::Reaction* myReaction = new Reaction();
    myReaction->ReadConfigurationFile(reactionfileName);
 
+   // set energy beam at target middle
+   myReaction->SetBeamEnergy(1292);
+
    // Initialize the detector
-   DetectorManager* myDetector = new DetectorManager;
+   NPA::DetectorManager* myDetector = new DetectorManager;
    myDetector->ReadConfigurationFile(detectorfileName);
 
+   // Print target thickness
+   cout << myDetector->GetTargetThickness() << endl;
+
    // Attach more branch to the output
-   double Ex = 0 ; double EE = 0 ; double TT = 0 ; double X = 0 ; double Y = 0 ; int det ;
+   double Ex = 0 ; double ExNoStrips = 0 ; double EE = 0 ; double TT = 0 ; double X = 0 ; double Y = 0 ; int det ;
    RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergy",&Ex,"Ex/D") ;
+   RootOutput::getInstance()->GetTree()->Branch("ExcitationEnergyNoStrips",&ExNoStrips,"ExNoStrips/D") ;
    RootOutput::getInstance()->GetTree()->Branch("E",&EE,"EE/D") ;
    RootOutput::getInstance()->GetTree()->Branch("A",&TT,"TT/D") ;
    RootOutput::getInstance()->GetTree()->Branch("X",&X,"X/D") ;
@@ -54,7 +61,7 @@ int main(int argc,char** argv)
    cout << "Number of entries to be analysed: " << nentries << endl;
 
    for (int i = 0; i < nentries; i ++) {
-      if (i%10000 == 0 && i!=0) cout << i << " analysed events" << endl;
+      if (i%10000 == 0 && i!=0) cout << "\r" << i << " analyzed events" << flush;
       chain -> GetEntry(i);
 
       // Treat Gaspard event
@@ -76,15 +83,22 @@ int main(int argc,char** argv)
          // Calculate scattering angle
          ThetaStrip = ThetaCalculation (A ,TVector3(0,0,1));
 
+         // Correct for energy loss in the target
+         E = LightTarget.EvaluateInitialEnergy(E, 5.15*micrometer, ThetaStrip);
+
          // Calculate excitation energy
          if (Theta/deg > 90) {
-//            Ex = myReaction->ReconstructRelativistic(E, Theta / rad);
-            Ex = myReaction->ReconstructRelativistic(E, ThetaStrip);
+            ExNoStrips = myReaction->ReconstructRelativistic(E, Theta / rad);
+            Ex         = myReaction->ReconstructRelativistic(E, ThetaStrip);
+         }
+         else {
+            Ex         = -200;
+            ExNoStrips = -200;
          }
-         else Ex = -200;
       }
       else {
-         Ex = -100;
+         Ex         = -100;
+         ExNoStrips = -100;
       }
 
       EE = E ; TT = ThetaStrip/deg;
diff --git a/NPAnalysis/Gaspard/src/DetectorManager.cc b/NPAnalysis/Gaspard/src/DetectorManager.cc
deleted file mode 100644
index 93bbbd699e84eaacedecc00f80499a4608e9a676..0000000000000000000000000000000000000000
--- a/NPAnalysis/Gaspard/src/DetectorManager.cc
+++ /dev/null
@@ -1,229 +0,0 @@
-#include "DetectorManager.hh"
-
-//	STL
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-//	Detector	
-#include "Must2Array.h"
-#include "GaspardTracker.h"
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Default Constructor and Destructor
-DetectorManager::DetectorManager()	
-	{}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-DetectorManager::~DetectorManager()
-	{}
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Read stream at ConfigFile and pick-up Token declaration of Detector
-void	DetectorManager::ReadConfigurationFile(string Path)	
-	{
-		////////General Reading needs////////
-	   string LineBuffer;
-	   string DataBuffer;
-
-	   /////////Boolean////////////////////
-	   bool MUST2           = false  ;
-	   bool AddThinSi       = false  ;
-	   bool GeneralTarget   = false  ;
-	   bool GPDTracker      = false  ;	// Gaspard Tracker
-	   //////////////////////////////////////////////////////////////////////////////////////////
-	   // added by Nicolas [07/05/09]
-	   string GlobalPath = getenv("NPTOOL");
-	   Path = GlobalPath + "/Inputs/DetectorConfiguration/" + Path;
-	   ifstream ConfigFile;
-	   ConfigFile.open(Path.c_str());
-
-	   if (ConfigFile.is_open())
-	   	{
-	   		cout << "/////////////////////////////" << endl;
-	      	cout << " Configuration file " << Path << " loading " << endl;
-	   	}	
-	   	
-	   else 
-	   	{
-	      cout << " Error, no configuration file" << Path << " found" << endl;
-	      return;
-	   	}
-
-
-	   while (!ConfigFile.eof()) {
-	      //Pick-up next line
-	      getline(ConfigFile, LineBuffer);
-	      //Search for comment Symbol: %
-	      if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/ ;}
-
-	      ////////////////////////////////////////////
-	      //////////// Search for Gaspard ////////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
-	         GPDTracker = true ;
-	         cout << "//////// Gaspard Tracker ////////" << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new GaspardTracker()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector("GASPARD", myDetector)                            ;
-	      }
-
-	      ////////////////////////////////////////////
-	      //////// Search for MUST2 Array  ////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
-	         MUST2 = true ;
-	         cout << "//////// MUST2 Array ////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new MUST2Array()                 ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector("MUST2" , myDetector)                               ;
-	      }
-
-	/*      ////////////////////////////////////////////
-	      ////////// Search for Add.ThinSi ///////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
-	         AddThinSi = true ;
-	         cout << "//////// Thin Si ////////" << endl << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new ThinSi()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector(myDetector)                            ;
-	      }
-
-	      ////////////////////////////////////////////
-	      //////////// Search for Target /////////////
-	      ////////////////////////////////////////////
-
-	      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
-	         GeneralTarget = true ;
-	         cout << "////////// Target ///////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Objects
-	         VDetector* myDetector = new Target()                     ;
-
-	         // Read Position and target specification
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         m_TargetThickness = ((Target*)myDetector)->GetTargetThickness()   ;
-	         m_TargetRadius    = ((Target*)myDetector)->GetTargetRadius()   ;
-	         m_TargetX        = ((Target*)myDetector)->GetTargetX()         ;
-	         m_TargetY        = ((Target*)myDetector)->GetTargetY()         ;
-	         m_TargetZ        = ((Target*)myDetector)->GetTargetZ()         ;
-
-	         // Add target to the VDetector Vector
-	         AddDetector(myDetector)                               ;
-	      }*/
-
-	      //Nothing understandable
-	      //else ;
-	   }
-
-		ConfigFile.close();
-		
-		InitializeRootInput();
-		InitializeRootOutput();
-		
-		return   ;
-	}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::BuildPhysicalEvent()						
-	{	
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildPhysicalEvent()	;	
-			}           
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::BuildSimplePhysicalEvent()					
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildSimplePhysicalEvent()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::InitializeRootInput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootInput()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::InitializeRootOutput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootOutput()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::AddDetector(string DetectorName , VDetector* newDetector)	
-	{
-		m_Detector[DetectorName] = newDetector ;
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventPhysics()	
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventPhysics()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventData()
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventData()	;	
-			}   
-		
-	}
-			
diff --git a/NPAnalysis/Gaspard/src/GNUmakefile b/NPAnalysis/Gaspard/src/GNUmakefile
index c18b108aaeff1d074e76e615e2f38d050e4cfedc..28c404622cec4d40b2e93aa0009fc4fc4fa97d26 100644
--- a/NPAnalysis/Gaspard/src/GNUmakefile
+++ b/NPAnalysis/Gaspard/src/GNUmakefile
@@ -16,20 +16,17 @@ CXXFLAGS += -I$(NPAINCLUDES)
 CXXFLAGS += -I$(NPLIB)/include
 
 LDFLAGS  = `root-config --libs` -lMathMore
-LDFLAGS+= -L$(NPLIB)/lib -lVDetector -lIORoot -lReaction -lEnergyLoss \
-			-lMust2Data -lMust2Physics \
-			-lGaspardData -lGaspardPhysics \
-			-lAnnularS1Data \
-			-lInitialConditions -lInteractionCoordinates
+LDFLAGS+= `$(NPLIB)/liblist`
 LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) 
 
 SRC= $(wildcard *.cc)
+INC= $(wildcard $(NPAINCLUDES)/*.hh)
 OBJ=$(SRC:.cc=.o)
 
 #all:$(EXEC)
 #	@$(CPP) -o $@ -c $< $(CXXFLAGS)
 
-Analysis:$(OBJ)
+Analysis:$(OBJ) $(INC)
 	@$(CPP) $(CXXFLAGS) -o $@ $^ $(LDFLAGS)
 	mv Analysis  ../Analysis
 
diff --git a/NPAnalysis/Template/Makefile b/NPAnalysis/Template/Makefile
index f5bfeb69ffd25b28c9ccb8a81eebb1b66664dfa2..fbc1279e119e5439eb7a7547a93815a2783fdcef 100644
--- a/NPAnalysis/Template/Makefile
+++ b/NPAnalysis/Template/Makefile
@@ -4,3 +4,9 @@ Analyse:
 	
 clean:
 	make clean -C ./src
+
+distclean:
+	make clean -C ./src
+	rm Analysis
+
+
diff --git a/NPAnalysis/Template/include/DetectorManager.hh b/NPAnalysis/Template/include/DetectorManager.hh
deleted file mode 100644
index eb49f01ef92509cd0531f4f12c7eace833047e61..0000000000000000000000000000000000000000
--- a/NPAnalysis/Template/include/DetectorManager.hh
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifndef DetectorManager_h
-#define DetectorManager_h
-
-//	NPL
-#include "VDetector.h"
-
-//	STL
-#include <string>
-#include <map>
-
-using namespace std ;
-using namespace NPA ;
-
-// This class manage a map of virtual detector
-
-class DetectorManager
-	{
-		public:
-			DetectorManager()		;
-			~DetectorManager()		;
-			
-		public:
-			//	Read stream at Path and pick-up Token declaration of Detector
-			void	ReadConfigurationFile(string Path)	;
-			void	BuildPhysicalEvent()				;
-			void	BuildSimplePhysicalEvent()			;
-			void	InitializeRootInput()				;
-			void	InitializeRootOutput()				;
-			void	AddDetector(string,VDetector*)		;
-			void	ClearEventPhysics()					;
-			void	ClearEventData()					;
-
-		public:	//	The map containning all detectors
-			//	Using a Map one can access to any detector using its name
-			map<string,VDetector*>	m_Detector	;
-				
-	};
-
-#endif 
diff --git a/NPAnalysis/Template/include/ObjectManager.hh b/NPAnalysis/Template/include/ObjectManager.hh
index e0a66004be5b8c354e8e3f7175613fbd2c625d7a..be80b3102aab19cf42f067d5cebe23d2dee120dd 100644
--- a/NPAnalysis/Template/include/ObjectManager.hh
+++ b/NPAnalysis/Template/include/ObjectManager.hh
@@ -6,8 +6,7 @@
 // -------------------------------------- VARIOUS INCLUDE ---------------------------------------
 
 // NPA
-#include "DetectorManager.hh"
-#include "Must2Array.h"
+#include "DetectorManager.h"
 
 // STL C++
 #include <iostream>
@@ -26,11 +25,16 @@
 #include <TRandom.h>
 
 // NPL
-#include "TMust2Data.h"
-#include "TMust2Physics.h"
-#include "NPReaction.h"
 #include "RootInput.h"
 #include "RootOutput.h"
+#include "NPReaction.h"
+#include "TInitialConditions.h"
+#include "TPlasticData.h"
+#include "TMust2Data.h"
+#include "TMust2Physics.h"
+#include "TSSSDPhysics.h"
+#include "TPlasticPhysics.h"
+#include "GaspardTracker.h"
 
 // Use CLHEP System of unit and Physical Constant
 #include "CLHEP/Units/GlobalSystemOfUnits.h"
@@ -106,6 +110,7 @@ namespace ENERGYLOSS
 		//	Declare your Energy loss here	:
 	/*		EnergyLoss ProtonTarget = EnergyLoss 	(	"CD2.txt" 	,
 														100 		,
+														1,
 														1			);
 	*/
 	}
diff --git a/NPAnalysis/Template/src/Analysis.cc b/NPAnalysis/Template/src/Analysis.cc
index a22fa769ce0dcb2e48fa16b4b59c6a1fa7c84c6e..16f32300f37ea75d7e45962aa128f2c13448657c 100644
--- a/NPAnalysis/Template/src/Analysis.cc
+++ b/NPAnalysis/Template/src/Analysis.cc
@@ -27,7 +27,7 @@ int main(int argc,char** argv)
 	myReaction	->	ReadConfigurationFile(reactionfileName)		;
 
 		//	Instantiate the detector using a file 
-	DetectorManager* myDetector = new DetectorManager 			;
+	NPA::DetectorManager* myDetector = new DetectorManager 			;
 	myDetector	->	ReadConfigurationFile(detectorfileName)		;
 	
 	//	Get the formed Chained Tree and Treat it
@@ -35,8 +35,8 @@ int main(int argc,char** argv)
 	int i;	
 	for ( i = 0 ; i < Chain -> GetEntries() ; i ++ )
 		{
-			if( i%10000 == 0 && i!=0) cout << i << " Event annalysed " << endl ;						
-			Chain -> GetEntry(i);
+			if( i%10000 == 0 && i!=0) cout << "\r Event Analyzed:" << i << flush;					
+			Chain -> GetEntry(i);			
 			
 			myDetector -> ClearEventPhysics()				;
 			myDetector -> BuildPhysicalEvent()				;
diff --git a/NPAnalysis/Template/src/DetectorManager.cc b/NPAnalysis/Template/src/DetectorManager.cc
deleted file mode 100644
index 000d61fe3827077359d77aa4c4f2af460364fbfd..0000000000000000000000000000000000000000
--- a/NPAnalysis/Template/src/DetectorManager.cc
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "DetectorManager.hh"
-
-//	STL
-#include <iostream>
-#include <fstream>
-#include <cstdlib>
-
-//	Detector	
-#include "Must2Array.h"
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Default Constructor and Destructor
-DetectorManager::DetectorManager()	
-	{}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-DetectorManager::~DetectorManager()
-	{}
-
-
-/////////////////////////////////////////////////////////////////////////////////////////////////
-//	Read stream at ConfigFile and pick-up Token declaration of Detector
-void	DetectorManager::ReadConfigurationFile(string Path)	
-	{
-		////////General Reading needs////////
-	   string LineBuffer;
-	   string DataBuffer;
-
-	   /////////Boolean////////////////////
-	   bool MUST2           = false  ;
-	   bool AddThinSi       = false  ;
-	   bool GeneralTarget   = false  ;
-	   bool GPDTracker      = false  ;	// Gaspard Tracker
-	   //////////////////////////////////////////////////////////////////////////////////////////
-	   // added by Nicolas [07/05/09]
-	   string GlobalPath = getenv("NPTOOL");
-	   Path = GlobalPath + "/Inputs/DetectorConfiguration/" + Path;
-	   ifstream ConfigFile;
-	   ConfigFile.open(Path.c_str());
-
-	   if (ConfigFile.is_open())
-	   	{
-	   		cout << "/////////////////////////////" << endl;
-	      	cout << " Configuration file " << Path << " loading " << endl;
-	   	}	
-	   	
-	   else 
-	   	{
-	      cout << " Error, no configuration file" << Path << " found" << endl;
-	      return;
-	   	}
-
-
-	   while (!ConfigFile.eof()) {
-	      //Pick-up next line
-	      getline(ConfigFile, LineBuffer);
-	      //Search for comment Symbol: %
-	      if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/ ;}
-
-	    /*  ////////////////////////////////////////////
-	      //////////// Search for Gaspard ////////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
-	         GPDTracker = true ;
-	         cout << "//////// Gaspard Tracker ////////" << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new GaspardTracker()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector(myDetector)                            ;
-	      }*/
-
-	      ////////////////////////////////////////////
-	      //////// Search for MUST2 Array  ////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
-	         MUST2 = true ;
-	         cout << "//////// MUST2 Array ////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new MUST2Array()                 ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector("MUST2" , myDetector)                               ;
-	      }
-
-	/*      ////////////////////////////////////////////
-	      ////////// Search for Add.ThinSi ///////////
-	      ////////////////////////////////////////////
-	      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
-	         AddThinSi = true ;
-	         cout << "//////// Thin Si ////////" << endl << endl   ;
-
-	         // Instantiate the new array as a VDetector Object
-	         VDetector* myDetector = new ThinSi()                  ;
-
-	         // Read Position of Telescope
-	         ConfigFile.close()                                 ;
-	         myDetector->ReadConfiguration(Path)                   ;
-	         ConfigFile.open(Path.c_str())                      ;
-
-	         // Add array to the VDetector Vector
-	         AddDetector(myDetector)                            ;
-	      }
-
-	      ////////////////////////////////////////////
-	      //////////// Search for Target /////////////
-	      ////////////////////////////////////////////
-
-	      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
-	         GeneralTarget = true ;
-	         cout << "////////// Target ///////////" << endl   << endl   ;
-
-	         // Instantiate the new array as a VDetector Objects
-	         VDetector* myDetector = new Target()                     ;
-
-	         // Read Position and target specification
-	         ConfigFile.close()                                    ;
-	         myDetector->ReadConfiguration(Path)                      ;
-	         ConfigFile.open(Path.c_str())                         ;
-
-	         m_TargetThickness = ((Target*)myDetector)->GetTargetThickness()   ;
-	         m_TargetRadius    = ((Target*)myDetector)->GetTargetRadius()   ;
-	         m_TargetX        = ((Target*)myDetector)->GetTargetX()         ;
-	         m_TargetY        = ((Target*)myDetector)->GetTargetY()         ;
-	         m_TargetZ        = ((Target*)myDetector)->GetTargetZ()         ;
-
-	         // Add target to the VDetector Vector
-	         AddDetector(myDetector)                               ;
-	      }*/
-
-	      //Nothing understandable
-	      //else ;
-	   }
-
-		ConfigFile.close();
-		
-		InitializeRootInput();
-		InitializeRootOutput();
-		
-		return   ;
-	}
-	
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::BuildPhysicalEvent()						
-	{	
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildPhysicalEvent()	;	
-			}           
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::BuildSimplePhysicalEvent()					
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->BuildSimplePhysicalEvent()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::InitializeRootInput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootInput()	;	
-			}    
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////	
-
-void	DetectorManager::InitializeRootOutput()						
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->InitializeRootOutput()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-	
-void	DetectorManager::AddDetector(string DetectorName , VDetector* newDetector)	
-	{
-		m_Detector["MUST2"] = newDetector ;
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventPhysics()	
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventPhysics()	;	
-			}   
-		
-	}
-/////////////////////////////////////////////////////////////////////////////////////////////////
-void	DetectorManager::ClearEventData()
-	{
-		map<string,VDetector*>::iterator it	;
-		
-		for( it = m_Detector.begin() ; it != m_Detector.end() ; ++it) 
-			{
-				it->second->ClearEventData()	;	
-			}   
-		
-	}
-			
diff --git a/NPAnalysis/Template/src/GNUmakefile b/NPAnalysis/Template/src/GNUmakefile
index 15a9a7a10e9dc1d50489b0a14210d6697621466d..28c404622cec4d40b2e93aa0009fc4fc4fa97d26 100644
--- a/NPAnalysis/Template/src/GNUmakefile
+++ b/NPAnalysis/Template/src/GNUmakefile
@@ -16,10 +16,7 @@ CXXFLAGS += -I$(NPAINCLUDES)
 CXXFLAGS += -I$(NPLIB)/include
 
 LDFLAGS  = `root-config --libs` -lMathMore
-LDFLAGS+= -L$(NPLIB)/lib -lVDetector -lIORoot -lReaction -lEnergyLoss \
-			-lMust2Data -lMust2Physics \
-			-lAnnularS1Data -lGaspardData \
-			-lInitialConditions -lInteractionCoordinates
+LDFLAGS+= `$(NPLIB)/liblist`
 LDFLAGS+= -L$(CLHEP_LIB_DIR) -l$(CLHEP_LIB) 
 
 SRC= $(wildcard *.cc)
diff --git a/NPAnalysis/macros/ControlSimu.C b/NPAnalysis/macros/ControlSimu.C
index bb7b8ddcbe521156b05f6c42264ec1922d0e8456..9717f67cf6c6a80bcb11cb07e53e9babbd14e3c7 100644
--- a/NPAnalysis/macros/ControlSimu.C
+++ b/NPAnalysis/macros/ControlSimu.C
@@ -68,6 +68,8 @@ void ControlSimu(const char * fname = "mySimul")
    TH2F *hEmittanceYPhi   = new TH2F("hEmittanceYPhi",   "Emittance (y, #phi)",       200, -10, 10, 200, -10, 10);
    TH1F *hIncidentTheta   = new TH1F("hIncidentTheta",   "Incident Theta",            100,   0, 10);
    TH1F *hIncidentPhi     = new TH1F("hIncidentPhi",     "Incident Phi",              360,   0, 360);
+   TH1F *hIncidentZ       = new TH1F("hIncidentZ",       "z-position of interaction", 200,  -5, 5);
+
    // for emitted particle
    TH1F *hEmittedThetaCM = new TH1F("hEmittedThetaCM", "Emitted Theta CM",               180, 0, 180);
    TH1F *hEmittedThetaIF = new TH1F("hEmittedThetaIF", "Emitted Theta (reaction frame)", 180, 0, 180);
@@ -87,6 +89,7 @@ void ControlSimu(const char * fname = "mySimul")
       // Fill histos
       // incident beam
       hEmittanceXY     -> Fill(initCond->GetICPositionX(0), initCond->GetICPositionY(0));
+      hIncidentZ       -> Fill(initCond->GetICPositionZ(0));
       hEmittanceXTheta -> Fill(initCond->GetICPositionX(0), initCond->GetICIncidentEmittanceTheta(0));
       hEmittanceYPhi   -> Fill(initCond->GetICPositionX(0), initCond->GetICIncidentEmittancePhi(0));
       hIncidentTheta   -> Fill(initCond->GetICIncidentAngleTheta(0));
@@ -118,6 +121,8 @@ void ControlSimu(const char * fname = "mySimul")
    hIncidentPhi->Draw();
    canvas1->cd(5);
    hEmittanceXY->Draw("colz");
+   canvas1->cd(6);
+   hIncidentZ->Draw();
 
    // Display histograms
    TCanvas *canvas2 = new TCanvas("canvas2", "Emitted particle properties");
diff --git a/NPAnalysis/macros/GeometricalEfficiency.C b/NPAnalysis/macros/GeometricalEfficiency.C
index 5bbc6f5864000c292f58a2741c5f69160e0ed90f..c2e43a82ad2a6150cd92bb2f6437d6572948e1fe 100644
--- a/NPAnalysis/macros/GeometricalEfficiency.C
+++ b/NPAnalysis/macros/GeometricalEfficiency.C
@@ -36,10 +36,10 @@
 #include "TBranch.h"
 #include "TH1F.h"
 
-#include "TInitialConditions.h"
-#include "TInteractionCoordinates.h"
+using namespace std ;
 
-void GeometricalEfficiency(const char * fname = "Efficiency_10000")
+
+void GeometricalEfficiency(const char * fname = "mySimul")
 {
    // Open output ROOT file from NPTool simulation run
    TString path = gSystem->Getenv("NPTOOL");
@@ -65,9 +65,9 @@ void GeometricalEfficiency(const char * fname = "Efficiency_10000")
 
    // Read the TTree
    Int_t nentries = tree->GetEntries();
-   cout << "TTree contains " << nentries << " events" << endl;
+ // cout << "TTree contains " << nentries << " events" << endl;
    for (Int_t i = 0; i < nentries; i++) {
-      if (i%1000 == 0) cout << "Entry " << i << endl;
+      //if (i%1000 == 0) cout << "Entry " << i << endl;
       tree->GetEntry(i);
       // Fill histos
       hEmittTheta->Fill(initCond->GetICEmittedAngleThetaLabWorldFrame(0));
@@ -77,8 +77,8 @@ void GeometricalEfficiency(const char * fname = "Efficiency_10000")
 
    // Compute relative efficiency in %
    TH1F *efficiency = new TH1F("hEfficiency", "Efficiency", 180, 0, 180);
-//   efficiency->SetTitle("Efficiency GASPARD;#Theta [deg];#epsilon [%]");
-   efficiency->SetTitle("Efficiency e530;#Theta [deg];#epsilon [%]");
+   efficiency->SetTitle("Efficiency GASPARD (Spheric version);#Theta [deg];#epsilon [%]");
+//   efficiency->SetTitle("Efficiency e530;#Theta [deg];#epsilon [%]");
    efficiency->Divide(hDetecTheta,hEmittTheta,100);
    efficiency->SetMaximum(110);
    efficiency->Draw();
diff --git a/NPDocumentation/Gaspard.tex b/NPDocumentation/Gaspard.tex
index 38974666e8e0a9650e3095cc10732ed1740ec33b..e486f4bc743e576454702cc44f370f8a31e6e8ae 100755
--- a/NPDocumentation/Gaspard.tex
+++ b/NPDocumentation/Gaspard.tex
@@ -1,7 +1,7 @@
 \documentclass[a4paper,12pt]{article}
 \usepackage[T1]{fontenc}
-\usepackage [isolatin]{inputenc} % fontes avec caracteres accentues
-\usepackage{graphicx} % inclusion de figures
+\usepackage [isolatin]{inputenc}
+\usepackage{graphicx}
 \usepackage{listings}
 
 \begin{document}
@@ -11,17 +11,243 @@
 
 \maketitle 
 \pagebreak
-\tableofcontents % la table des matieres
+\tableofcontents
 \pagebreak
 
 
 \section{Introduction}
+The Gaspard project is developed within the NPTool framework. For the 
+moment only the tracker of charged particles is currently under study.
+Coupling the tracker with a gamma-ray calorimeter such as AGATA or
+PARIS will be considered in the near future. 
+
+NPTool is a modular package allowing to perform Geant4 simulations and to 
+analyse the results of the simulations. It is strongly encouraged to read 
+the general NPTool documentation that you can find in this directory.
+
+
 \section{NPSimulation}
-\subsection{}
-\subsection{Storing the results of the simulation}
+\subsection{Specificity of Gaspard}
+The Gaspard tracker detector, even if it is made of several detectors of
+different shapes (square, trapezoid, annular, ...), is considered as {\it one} 
+detector from the NPSimulation point of view. The Gaspard tracker detector 
+is described in the GaspardTracker class defined in the 
+GaspardTracker.\{hh,cc\} files. Since the Gaspard tracker detector is 
+registered in the DetectorConstructor.cc file it is available for NPSimulation.
+
+In order to manage the different detector shapes (square, trapezoid, annular, 
+...) of the Gaspard tracker, the GaspardTracker class holds a vector of 
+GaspardTrackerModule objects from which are, and should be, deriving all 
+the different shapes (GaspardTrackerSquare, GaspardTrackerAnnular,
+GaspardTrackerTrapezoid and GaspardTrackerDummyShape classes).
+
+
+\subsection{Running the simulation}
+To run NPSimulation the following command line should be executed: 
+
+\begin{verbatim}
+   Simulation xxx.reaction yyy.detector
+\end{verbatim}
+
+where xxx.reaction is an input file describing the event generator and
+yyy.detector is an input file describing the detector geometry. All these
+input files are based on keywords and can be found in the 
+\$NPTool/Inputs subdirectories.
+
+\subsubsection{Event Generators}
+All the different kind of event generator files as well as their 
+respective keywords are described in the general NPTool documentation. 
+
+\subsubsection{Detector Configurations}
+The keywords associated to the detector geometry file are different for 
+each detector. In case of the Gaspard tracker detector an example with 
+all the detector shapes available at the moment is given in the following:
+
+\begin{verbatim}
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   GaspardTracker
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   GPDAnnular
+           Z=      -156.5
+           RMIN=   16
+           RMAX=   52
+           FIRSTSTAGE= 1
+           SECONDSTAGE= 0
+           THIRDSTAGE= 1
+           VIS= all
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   GPDTrapezoid
+           X1_Y1=           45.64   34.43  -146.50
+           X128_Y1=         91.09   79.82   -91.36
+           X1_Y128=        120.84    8.00   -91.36
+           X128_Y128=       56.59    8.00  -146.50
+           FIRSTSTAGE= 1
+           SECONDSTAGE= 0
+           THIRDSTAGE= 1
+           VIS= all
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   GPDSquare
+           X1_Y1=          49.1    66.08   -135.41
+           X128_Y1=        -48.9   66.22   -135.41
+           X1_Y128=        -48.8   135.51  -66.1
+           X128_Y128=      49.2    135.36  -66.1
+           FIRSTSTAGE= 1
+           SECONDSTAGE= 0
+           THIRDSTAGE= 1
+           VIS= all
+   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+   GPDDummyShape
+           THETA= 90
+           PHI= 90
+           R= 100
+           BETA= 0 0 0
+           FIRSTSTAGE= 1
+           SECONDSTAGE= 1
+           THIRDSTAGE= 1
+           VIS= all
+\end{verbatim}
+
+In order to declare a Gaspard tracker detector in NPSimulation, the key
+word {\it GaspardTracker} should be specified in the geometry file. It
+should then be followed by other keywords concerning the different
+detectors present in the tracker. Such keywords available at the moment
+are:
+
+\begin{itemize}
+   \item {GPDAnnular}
+   \item {GPDTrapezoid}
+   \item {GPDSquare}
+   \item {GPDDummyShape}
+\end{itemize}
+
+Each keyword corresponds to a detector shape which have its own set of
+keywords which is used to position the detector in the world volume
+and to define the structure of the detector (basically the number of 
+layers of the detector).
+
+To position the detectors two possibilities exist. Either the cartesian 
+coordinates (x,y,z) of each detector's corner are specified with the 
+keywords {\it X1\_Y1}, {\it X1\_Y128}, {\it X128\_Y1} and {\it X128\_Y128}
+(case of GPDTrapezoid), either the spherical coordinates of the detector's 
+center are specified with the keywords {\it R}, {\it THETA} and {\it PHI} 
+(case of GPDDummyShape). While the first solution is very helpful when 
+working with the mechanical engineers, the second solution is useful when 
+investigating new geometries.
+
+In case of GPDAnnular only the position on the z-axis is given through
+the keyword {\it Z}. Other keywords such as {\it RMIN} and {\it RMAX} 
+are defined but have no effect. This should be changed in the future.
+
+Concerning the structure of the detector, all the detectors have the 
+possibility to have up to three layers of silicon. Each layer can be 
+activated independently using the keywords {\it FIRSTSTAGE}, 
+{\it SECONDSTAGE} and {\it THIRDSTAGE}. 
+
+
+\subsection{Results of the simulation}
+The results of the simulation are in the ROOT format and the output file 
+is stored in the \$NPTool/Output/Simulation directory. The output ROOT file 
+contains three classes:
+\begin{itemize}
+   \item {TInitialConditions:}
+      This class records all the information concerning the event generator
+      such as the vertex of interaction, the angles of emitted particles in 
+      the center of mass and laboratory frames...
+   \item {TInteractionCoordinates:}
+      This class mainly records the cartesian and spherical coordinates of 
+      interaction between a particle and a detector.
+   \item {TGaspardTrackerData:}
+      This class stores the results of the simulation for the tracker part 
+      of the Gaspard detector. Independently of the number and shape of the 
+      detectors involved in the geometry, only {\it one} class is created for 
+      the whole Gaspard tracker detector. For each event the strips number 
+      are recorded as well as the energy and time for the layers which are 
+      involved in the telescope.
+\end{itemize}
+
+
 \subsection{Adding a new detector shape to Gaspard}
+A special class (GaspardTrackerDummyShape) has been created to show how
+to define a new module for the Gaspard Tracker. This class describes a
+simple 5x5 cm$^2$ square telescope made of three layers of silicon which  
+has been used for some preliminary studies of the tracker. So, when 
+considering adding a new module to the Gaspard Tracker, please do not use
+this class but create your own instead. However, for the explanations the 
+GaspardTrackerDummyShape case will be considered.
+
+When adding a new detector you need to follow several steps:
+
+\subsubsection{Definition of an index for the detector}
+Since the results of the simulation are stored in an unique data class 
+(GaspardTrackerData) dealing with different module types, it is 
+necessary to give an absolute number to each module. This is managed in
+the GaspardTrackerModule class where there is a map (m\_index) which
+associates a name (the module type identifier) with an integer (the value 
+of the index).
+
+To add a new detector it is just needed to add in the {\it InitializeIndex()}
+method a line such as:
+
+\begin{verbatim}
+   m_index["DummyShape"] = 1000;
+\end{verbatim}
+
+\subsubsection{Definition of the geometry and its readout}
+This is done in the GaspardTrackerDummyShape.\{h,cxx\} files. Concerning
+the geometry it is defined in the {\it VolumeMaker()} method and the 
+the positioning of the module is done in the {\it ConstructDetector()} 
+method. 
+
+Concerning the readout of the geometry it is done in the {\it ReadSensitive()} 
+method and it is based on the method of the scorers available in G4. The 
+scorers associated to the Gaspard tracker are declared in the {\it 
+InitializeScorers()} method.
+
+\subsubsection{Definition of the scorers}
+If the scorers are declared in the {\it InitializeScorers()} method they should
+be defined in the GaspardScorers.\{hh,cc\} files. All basic scorers to record
+energy, time of flight and detector number are already implemented so when a new
+detector is added to Gaspard tracker there is nothing to add from this point
+of vue. However scorers determining the strip number for the front and back
+side of the silicon detector's first stage (if double-sided) should be implemented.
+In case of the GaspardTrackerDummyShape class this corresponds to the two classes
+GPDScorerFirstStageFrontStripDummyShape and GPDScorerFirstStageBackStripDummyShape.
+
+\subsubsection{Integration in GaspardTracker}
+In order to make the GaspardTracker detector aware of the GaspardTrackerDummyShape
+module it has to be registered in the {\it ReadConfiguration()} method of the 
+GaspardTracker class. Don't forget to include the GaspardTrackerDummyShape.hh 
+header in the GaspardTracker.cc file. Then, in the GaspardTrackerDummyShape class 
+the keywords used when the geometry file is read should be defined in the {\it 
+ReadConfiguration()} method.
+
 
 \section{NPAnalysis}
+\subsection{General}
+A set of general ROOT macros are available in the \$NPTool/NPAnalysis/macros 
+directory. You can for example obtain some control plots about the shooting
+conditions of the random variables. You can also calculate the geometrical 
+efficiency of your setup.
+
+The macros in this directory should be independant of the setup which is simulated.
+Specific macros to Gaspard tracker should be placed in the 
+\$NPTool/NPAnalysis/Gaspard/macros directory.
+
+
+\subsection{Gaspard}
+The main analysis tool for the Gaspard tracker is in the \$NPTool/NPAnalysis/Gaspard
+directory. For the moment the main feature is the reconstruction of the excitation 
+energy.
+
+\subsubsection{Running the analysis}
+******* to be documented *********
+
+\subsubsection{Results the analysis}
+******* to be documented *********
+
+\subsubsection{Structure of the analysis}
+******* to be documented *********
+
 
 \end{document}
 
diff --git a/NPDocumentation/General.pdf b/NPDocumentation/General.pdf
deleted file mode 100644
index dd024632fefa51f7c7adb0b8031c67a64463cfe0..0000000000000000000000000000000000000000
Binary files a/NPDocumentation/General.pdf and /dev/null differ
diff --git a/NPDocumentation/General.tex b/NPDocumentation/General.tex
deleted file mode 100755
index ebce024bd661d8733ce2cd1b40bb99eaf2501779..0000000000000000000000000000000000000000
--- a/NPDocumentation/General.tex
+++ /dev/null
@@ -1,87 +0,0 @@
-\documentclass[a4paper,12pt]{article}
-\usepackage[T1]{fontenc}
-\usepackage [isolatin]{inputenc} % fontes avec caracteres accentues
-\usepackage{graphicx} % inclusion de figures
-\usepackage{listings}
-
-\begin{document}
-
-\title{\emph{NPTool Documentation}}
-\author{Adrien MATTA}
-
-\maketitle 
-\pagebreak
-\tableofcontents % la table des matieres
-\pagebreak
-
-
-\section {Introduction}
-
-NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally.
-
-Because each experiment is differents, people get used to exchange code and modified it to their needs. What NPT do is provinding a common platform, each user can then add its own class to fit its own needs and share those class with our community. Working this way, each contribution is valorised(?).
-
-\section{NPSimulation}
-
-NPSimulation is build on top of Geant4. It's provide a coherent and modular sets of classes that can be easily modified for your purpose.
-
-\subsection{ The way it's work }
-
-Because NPS is build on top of Geant4,  you need C++ knowledge and Geant4 skills to understand how NPS work. NPS is a build as a modular basis that fit Nuclear Physicist needs: 
-\begin{itemize}
-	\item Generate Nuclear Physics Event such as transfert
-	\item Deal with different Detectors and Configuration (Number of module, positionning...)
-\end{itemize}
-
- 
-\subsection{ Adding a detector to NPS }
-
-What you need is to create a new classes to your detector. In the following line, you can replace myDetector by your detector name. First create a new file myDetector.hh in the include directory of NPS.
-
-Here is the layout of your header file :
-
-\lstset{language=[GNU]C++,tabsize=4}
-\begin{lstlisting}
-	#ifndef MyDetector_H
-	#define MyDetector_H
-	#include "VDetector.hh"
-	
-	class myDetector : public VDetector
-	{
-		public:		//	Creator and Destructor
-			myDetector()	;
-			~myDetector()	;
-			
-		public:		//	Inherit from VDetector Class
-			void ReadConfiguration(string)
-			void ConstructDetector(G4LogicalVolume*)
-			void AddDetectorToTree(TTree*)
-			void ReadSensitive(const G4Event*)
-			
-		public:		// Specific methods of myDetector
-			void MySpecificMethod ()	;
-		
-		private:	//	Private member of myDetector
-			TTree*	m_Tree				;
-			// Optional but recommanded:
-			myDetectorData	m_Data		;
-			
-		private:	//	Private member of myDetector
-			G4double OtherParameter		;			
-	};
-	#endif
-\end{lstlisting}
-
-
-One can not that four methods come from the VDetector class. In VDetector class, those method are declared as virtual, and not implemented. You must implement those method in your class or the compilation will failed.
-
-
-%\begin{figure}[!htbp]
-%\centering
-%\includegraphics[width=0.9\textwidth]{cross_section.png}\\
-%\caption{ \emph{Sections efficaces th\'{e}oriques de la r\'{e}action calcul\'{e}s par m\'{e}thode DWBA \`{a} 30MeV/Nucl pour différents %moments cinétiques.} }
-%\label{CS}
-%\end{figure}
-
-\end{document}
-
diff --git a/NPDocumentation/NPTool_UserGuide.tex b/NPDocumentation/NPTool_UserGuide.tex
new file mode 100755
index 0000000000000000000000000000000000000000..1d9e94b71907bf95457147a170af10c43b55b7ae
--- /dev/null
+++ b/NPDocumentation/NPTool_UserGuide.tex
@@ -0,0 +1,361 @@
+%\documentclass[a4paper,12pt]{article}
+\documentclass{book}
+\usepackage[T1]{fontenc}
+\usepackage [isolatin]{inputenc}
+\usepackage{graphicx}
+\usepackage{listings}
+
+%\usepackage{fancyhdr}
+%\pagestyle{fancy}
+% with this we ensure that the chapter and section
+% headings are in lowercase.
+%\renewcommand{\chaptermark}[1]{%
+%        \markboth{#1}{}}
+%\renewcommand{\sectionmark}[1]{%
+%        \markright{\thesection\ #1}}
+%\fancyhf{} % delete current header and footer
+%\fancyhead[LE,RO]{\bfseries\thepage}
+%\fancyhead[LO]{\bfseries\rightmark}
+%\fancyhead[RE]{\bfseries\leftmark}
+%\renewcommand{\headrulewidth}{0.5pt}
+%\renewcommand{\footrulewidth}{0pt}
+%\addtolength{\headheight}{0.5pt} % space for the rule
+%\fancypagestyle{plain}{%
+%   \fancyhead{} % get rid of headers on plain pages
+%   \renewcommand{\headrulewidth}{0pt} % and the line
+%}
+
+%\documentclass[a4paper,12pt]{book}
+%\usepackage[T1]{fontenc}
+%\usepackage [isolatin]{inputenc} % fontes avec caracteres accentues
+%\usepackage{graphicx} % inclusion de figures
+%\usepackage{listings}
+
+\begin{document}
+
+\title{\emph{NPTool 1.0 User Guide}}
+\author{Adrien MATTA}
+
+\maketitle 
+\pagebreak
+\tableofcontents % la table des matieres
+\pagebreak
+
+\chapter[NPTool]{NPTool}
+\section {Introduction}
+
+NPTool, Nuclear Physics Tool, aim to be a coherent set of programm usefull for Nuclear Physicist, especially those studying structure experimentally. 
+Because each experiment is differents, people get used to exchange code and modified it to their needs. 
+What NPT do is provinding an (try to be) universal framework so user can add their own functionnalities and share it with their collaborators. 
+Geant4 and ROOT are now popular toolkit among the community, that's why NPTool use them widely and try to give a step by step process to use them efficiently.
+
+In NPTool analysis and simulation are linked together. 
+The proposed way of working is to generate an experiment like set of data and then annalysing with the future analysis code. 
+Working this way help saving time by doing the biggest part of the analysis work in advance. 
+It also help to understand what happen during analysis. 
+
+				\begin{figure}[!htbp]
+					\centering
+					\includegraphics[width=0.5\textwidth]{./pictures/nptool_scheme_Sim.png}
+					\caption{ \emph{Phase 1: Preparing an experiment} }
+				\end{figure}
+
+				\begin{figure}[!htbp]
+					\centering
+					\includegraphics[width=0.5\textwidth]{./pictures/nptool_scheme_Ana.png}
+					\caption{ \emph{Phase 2: Analysing an experiment} }
+				\end{figure}	
+				
+				
+				
+\section{The directory layout}
+	NPTool come with a specific directory layout. 
+	The different make file and source are made to use this layout, using the environment variable. 
+	Here is the standard layout:
+		\begin{itemize}
+			\item[-] NPLib : hold the libraries used both in NPA and NPS (NB: those librairies can be use in your own independant code if needed)
+			\item[-] NPSimulation : hold the NPSimulation code
+			\item[-] NPAnalysis: this folder contain one folder for each analysis project, feel free to make new one on the basis of the template one for instance
+			\item[-] Inputs: this folder contain several folder, one for each type of intput, where you can find the input file used by the programm
+			\item[-] Outputs: find here the outputs file of your simulation and analysis project
+			\item[-] NPDocumentation: hold the documentation file
+			\item[-] Licence: Take a look to the licence file and the list of contributor
+			\item[-] \_MTN: you can some time find this folder, it not exactly part of the NPTool project, and is used only if you are working on the monotone data base (ie: if you are a contributor)
+			\item[] 		
+		\end{itemize}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter[NPLib]{NPLib}
+	\section{Introduction}
+	
+	NPLib is the core package of NPTool, it contain several classes used in both analysis and simulation programm.
+	NPTool versatility relly on this common core, its allow both programm to speak the same language in some way and also reduce drastically the amount of file since they are shared.
+	NPLib is widely build on top of ROOT,GSL and CLHEP (by order of importance), but not on Geant4.
+	
+	\section{the directory layout}
+		NPLib is made of several folder, one for each detector basicly and some for other shared object such as reaction and nucleus class. A common makefile is present in the NPLib directory calling the individual make file of every folder. In this folder you will also find a README file and the liblist file, containing a small macro used in NPA and NPS makefile to return the list of avaible librairies. Our phylosophy is to have two class for each detector, inheritted fron the TObject ROOT class so theyr can be put in a TTree. The first one is called the Data class, named following the TDetectorNameData, where T is there to remind the TObject dependance. This Data class hold the raw parameter given by the detector during an experiment, understood before any treatment. NPSimulation will output those kind of raw data, the only difference between a simulated and an experiement data object is the one comming from NPS are already calibrated. The second class is a Physics class, named TDetectorNamePhysics. This class hold the results of the treated Data object, ie after application of threshold, selection of good event, application of calibration,... and so one, depending on your detector. Note that the Physics class also derived from the VDetector class, and therefore can be used in NPA via the DetectorManager class. This system allow your annalysis programm to be more flexible and lisible. Let's have a look to the Directory layout:
+		
+		
+		\begin{itemize}
+			\item[DummyDetector] Template base for making your own Data and Physics class
+			\item[AnnularS1] Containing the Data object for the Annular detector "S1" by micron 
+			\item[GASPARD] Data and Physics object associate to the Gamma and Segmented Particule ARray Detector
+			\item[MUST2] Data and Physics object associate to the MUr a STrip 2 detector
+			\item[Plastic] Data and Physics object associate to the Plastic scintillator detector
+			\item[SSSD] Data and Physics object associate to the Single Sided Striped Detector
+			\item[InitialConditions] Used in NPS to output the initial physics condition of the generated event (Beam interaction position and energy, angle and energy of particule,...)
+			\item[InteractionCoordinates] Used in NPS to output the true physical point of interaction in the differents detector
+			\item[CalibrationManager] This class allowed to manage different file and token and associate them to detector
+			\item[IORoot] Hold the ROOTInput and ROOTOutput classes that allow an easier used of TTRee in NPS and NPA
+			\item[Tools] A few usefull classes such as Nuclear Reaction kinematics, Nucleus object and Energy Loss
+			\item[VDetector] Virtual Detector class from wich inherrited all Physics class
+			\item[include] All header are copy in this folder during compilation
+			\item[lib] All libraries are copy in this folder during compilation
+		\end{itemize}
+		
+	\section{Step by step from TDUMMYDetectorData class}
+		\subsection{step 1}
+			First, go to your consol and open the NPLib folder, there type \begin{verbatim}make distclean\end{verbatim}
+			This command will remove all the compilation generated file and only the source will remain.
+			Copy the DummyDetector folder and rename it, let's say, WonderdullDetector. 
+			Ebter the directory and rename the TDummyDetectorData.h and .cxx with your detector name, you should have now only three file: Makefile, TWonderfullDetectorData.h and TWonderfullDetectorData.cxx
+			If any other file remain, just remove it.
+			No open the .h and .cxx file with your favorite editor (gedit or vim for instance). Replace the the DUMMYDetector by your detector name. Just have look in the .h file, the class is very basic, a couple of value are stored in stl vector (allowing smaller tree and increasing speed access). A few methods allowed to set or get those value and to know the size of the different vector. 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+				
+\chapter[NPSimulation]{NPSimulation}
+
+\section{Introduction}
+
+NPSimulation is build on top of Geant4. 
+It's provide a coherent and modular sets of classes that can be easily modified for your purpose.
+
+\subsection{ The way it's work }
+
+Because NPS is build on top of Geant4, you need C++ knowledge and Geant4 skills to understand how NPS work. 
+NPS is a build as a modular basis that fit Nuclear Physicist needs: 
+	\begin{itemize}
+		\item Generate Nuclear Physics Event (such as a transfert, a beam, an ion source,... ) 
+		\item Mange Detectors geometry (Number of module, positionning...)
+	\end{itemize}
+NPTool
+NPS used two input files, one for the EventGenerator, and one for the Detectors Geometry. 
+Those file are regroup in the \$NPT/Input directory wher you can find the EventGenerator and the DetectorConfiguration folder. 
+If you want to add a new case you just have to create a new file in those directory. 
+Note that files in the input directory are token readable file. It mean that they are not compile with the code, just read at each programm lauch. 
+This way you can change the position of your detector or the energy of your beam for example without recompile the code. 
+You can also quickly exchange your file with collaborators.
+
+\section{ Running a simulation with existing detectors and event generator }
+
+Running a NPSimulation is quite simple, first, start a console terminal (shell) and put your self in the NPS directory.
+If you have add the environment variable correctly you can use the \emph{NPS} short cut that open the NPSimulation directory.
+	
+	\begin{verbatim}
+			[myName@myDomain ~]$ NPS
+			
+			[myName@myDomain NPSimulation]$ Simulation myReaction myDetector
+	\end{verbatim}
+	
+\emph{NB: order of arguments is essential. Both file need to be in the associated directory (see previous section).}
+
+\emph{Simulation} is their a shortcut (or alias) added in the environment variable. 
+In fact Geant4 generate the binari file in the path \$NPS/bin/YourSystem/ where "YourSystem" depend of you compilator and OS (for example \emph{Linux-g++}). 
+Thats why we use a convinient shortcut.
+
+After typing that command you will have a typical shell output of Geant4
+\begin{verbatim}
+*************************************************************
+Geant4 version Name: geant4-09-01-patch-03 (12-September-2008)
+                     Copyright : Geant4 Collaboration
+                     Reference : NIM A 506 (2003), 250-303
+                           WWW : http://cern.ch/geant4
+*************************************************************
+\end{verbatim}
+
+Followed by the echo of what are in your input file. 
+Check their that the token are well detected and everything correctly instantiate.
+
+Then you have some standard Geant4 output again and the idle consol where you can tape any of the common Geant4 command, such as launching a run of 100 event:
+\begin{verbatim}
+Idle> run/beamOn 100
+\end{verbatim}
+
+If you want to display the tracking of particle in the differente volume and check the Energy loss you can type the following line. 
+Keep in mind that display slow down the computation.
+
+\begin{verbatim}
+Idle> tracking/verbose 1
+\end{verbatim}
+
+The simulation will use the configured EventGenerator describe in your input file to generate events. 
+Geant4 will deal with the particle tracking, energy loss, decay,... 
+and the NPS framework generate an output ROOT file in the \$NPT/Output/Simulation directory. Default name for this file is mySimul.root. 
+Since the file is regenerated at each execution, one need to rename it in order to keep it.
+
+\section{ Adding a detector to NPS }
+
+\subsection{ the VDetector class}
+
+First you can have a look to the VDetector.hh file in the \$NPS/include directory. 
+All the detector inherited from this Virtual class (V in VDetector stand for that, following the Geant4 naming convention). 
+A virtual class described what should be the standard features of the inherited object. 
+In this case their is 5 methods: Note thats those method are virtual, wich mean they are not implemented within this virtual class but in the daughter class. 
+That allow to have the same method implemented differently for each detector. 
+The " = 0 " following the class header mean that compilation failed if the daugter class do not have its own method definition (wich can be eventually empty).
+A Vector of VDetector is manage by the DetectorConstruction file (see DetectorConstruction.hh and .cc) wich call those method automatically.
+
+	\begin{itemize}
+		\item[] ReadConfiguration(string): Read the file describing the Detector Configuration, ie: number of detector, position, and other option
+		\item[] ConstructDetector(G4LogicalVolume*): Argument is the world volume. The method construct the volume
+		\item[] ReadSensitive(const G4Event*): Read the scorer associate the to the sensitive method
+	\end{itemize}
+	
+The two last methods are followed by a "{}" wich mean you are free to implemented or not. 
+If not they will remain empty.
+	\begin{itemize}
+		\item[] InitializeRootOutput(): Instantiate a new Root Data object (see NPLib) and associate it to a new branch
+		\item[] InitializeScorers(): Initialize the scorer (see GeneralScorer.hh and Geant4 Documentation)
+	\end{itemize}
+
+\section{ Step by Step from the DUMMYDetector class}
+	The DUMMYDetector is a simple example of detector class manage in NPSimulation. 
+	We will use this class as a starting point for adding your new detector
+
+	\subsection{Step 1 : copying}
+		An easy step, just copy the file DummyDetector.cc and DummyDetector.hh in the NPSimulation/src and NPSimulation/include directory. 
+		Then rename them after your detector name, let say WonderfulDetector for the rest of the exemple. 
+		Open them with your favorite editor and use the replace function to replace all the DUMMYDetector occurence by your detector name, WondenfulDetector. 
+		You almost have finnish...
+
+	\subsection{Step 2 : adding your detector to the Detector Construction}
+		In order to allow the detector construction ton instantiate detector of yours you have to "tell him" to search for such detector. 
+		Open the DetectorConstruction.cc file in the NPSimulation/src directory. 
+		Have a look at the preprocessor includes, their is a list of all the detector avaible, just add a line with your file :
+	\begin{verbatim}
+	#include "WinderfulDetector.hh"
+	\end{verbatim}
+
+		Now DetectorConstruction know the WonderfulDetector class, but do not know how to find it in an input file. 
+		Have look to the DetectorConstruction::ReadConfigurationFile method. 
+		In this method Detector construction is reading the detector input file and looking for what kind of detector are presents. 
+		Every time a new kind of detector is detected, a new array of this kind is instantiate and inialize via is own ReadConfiguration method. 
+		For that, every class need an "array starting" token, wich should be different of the "module starting" token. 
+		In our case we will choose "WonderfulArray" as an array starting token. 
+		In order to avoid infinite loop of adding and adding the same detector again and again we need a boolean check, that simply check this kind of array is not already instantiate. 
+		First, add one of this boolean, lets called it cWonderful, your code should look like that
+
+	\begin{verbatim}
+		/////////Checking Boolean////////////////////
+		bool cMUST2           = false;
+		bool cAddThinSi       = false;
+		bool cGeneralTarget   = false;
+		bool cGPDTracker      = false;	// Gaspard Tracker
+		bool cS1              = false;
+		bool cPlastic         = false;
+		bool cDummy         	= false;
+		bool cWonderful				= false;
+	\end{verbatim}
+
+
+	Then add the small searching sequence right after the Dummy Detector Sequence:
+			
+	\begin{verbatim}
+					////////////////////////////////////////////
+					/////// Search for a Dummy Detector ////////
+					////////////////////////////////////////////
+					else if (LineBuffer.compare(0, 16, "TheDUMMYDetector") == 0 && cDummy == false) {
+						cDummy = true ;
+						G4cout << "//////// DUMMY DETECTOR ////////" << G4endl << G4endl;
+
+						// Instantiate the new array as a VDetector Object
+						VDetector* myDetector = new DUMMYDetector();
+
+						// Read Position of detector
+						ConfigFile.close();
+						myDetector->ReadConfiguration(Path);
+						ConfigFile.open(Path.c_str());
+
+						// Add array to the VDetector Vector
+						AddDetector(myDetector);
+					}
+
+					////////////////////////////////////////////
+					//// Search for a Wonderful Detector //////
+					////////////////////////////////////////////
+					else if (LineBuffer.compare(0, 15, "WonderfulArray") == 0 && cWonderful == false) {
+						cWonderful = true ;
+						G4cout << "//////// wonderful ARRAY ////////" << G4endl << G4endl;
+
+						// Instantiate the new array as a VDetector Object
+						VDetector* myDetector = new WonderfulDetector();
+
+						// Read Position of detector
+						ConfigFile.close();
+						myDetector->ReadConfiguration(Path);
+						ConfigFile.open(Path.c_str());
+
+						// Add array to the VDetector Vector
+						AddDetector(myDetector);
+		      }
+	\end{verbatim}
+
+	\subsection{Step 3 : Data output}
+
+	Lets have look to your Detector code. Open the WonderfulDetector.hh file and look at the private member, you should find the following line
+
+	\begin{verbatim}
+		////////////////////////////////////////////////////
+		///////////Event class to store Data////////////////
+		////////////////////////////////////////////////////
+		private:
+			TWonderfulDetectorData* m_Event ;
+
+	\end{verbatim}
+
+	The TWonderfulDetectorData class probably do not exist yet. 
+	So you will have to create one, for that, follow the tutorial in the NPLib chapter. 
+	If this class do not exist and you do not want to create one right now, simply use the TDUMMYDetectorData class instead (do not forget to change also the preprocessort include as well).
+
+	\subsection{Step 4 : Token definition}
+		NPS use input file with token detection. 
+		For each detector there is at least two token, we already see one in the previous part, the array starting token. 
+		You will need a second one, the module starting one, let choose "WonderfulModule". 
+		So have a look at the WonderfulDetector::ReadCOnfiguration method. 
+		In this method a loop over the config file is made, once the module starting bloc is fine, the ReadingStatus is set to true, wich mean we toggle to a module token search mode. 
+		Generally speaking the "\%" simbole is used as a comment symbole and every caracter after this symbole will be skipped until the end of line. 
+		This is the first token search. 
+		Then come the search for another module starting search, here a security to avoid wrong token sequence. 
+		Then come the list of all token. 
+		You can add as many token as you need following the same model. 
+		Just add one for exercise your self,
+
+		\begin{description}
+			\item[1:] Copying the THETA token bloc
+			\item[2:] We want to add a Token associate to the number of stage in our detector. At the beginning of the function let create an integer name NumberOfStage and set it to 0. We also need a boolean to check the token as been found, just create a boolean named check\_NumberOfStage, and set it to false (have a look to the other variable such as Theta and check\_Theta).
+			\item[3:] Change THETA to your new token, for instance "HOW\_MANY\_STAGE=" (note that token can't have space and always finnish by =). This new token have 15 caracter, so change the second argument of the compare method from 6 to 15.
+			\item[4:] Change check\_Theta to check\_NumberOfStage and \emph{Theta = atof(DataBuffer.c\_str())} to \emph{NumberOfStage = atof(DataBuffer.c\_str())}. Remove the \emph{Theta=Theta*deg} and change the cout to display a corrected message.
+		\end{description}
+
+		
+		\subsection{Step 5 : Material definition}
+
+		Just have a look at the InitializeMaterial function. 
+		You can here define as many as needed material after adding a private G4Material* object member to your classe. 
+		Remember to delete those new object in the detector destructor. Those material can then be used in the volume definition. 
+		This way each material are defined only one time per array, assuring a low number of material and therefor a low time running.
+
+		\subsection{Step 6 : Scorer definition}
+	
+	Let's define a Scorer as class object allowing you to perform any kind of measurement.NPSimulation used G4VPScorer (see the G4 documentation for more detail), understand Virtual Primitive Scorer. 
+	This virtual class allow Geant4 user to define the kind of scorer they want. 
+	Initially scorer were design to allow user to monitor some physical value inside a logical volume without using the ReadSensitive class and ReadOutGeometry. 
+	However, dure to their conception, those object was slow and running time quickly increased with the number of scorer... 
+	In NPSimulation we improve this system, using a new way of indexing data in scorer and delete them when they are not needed anymore and the running time is acceptable. 
+	Moreover, the Scorer simplify the code reading and allow user to come with their own set of scorer file dedicate to their detector. 
+	We implement some General Purpose scorer that you can use as well.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter[NPAnalysis]{NPAnalysis}
+
+\end{document}
+
diff --git a/NPDocumentation/logo/NPTool1.0.jpg b/NPDocumentation/logo/NPTool1.0.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..51a84c0ae6f32640d982334e10cfa33dd79963ea
Binary files /dev/null and b/NPDocumentation/logo/NPTool1.0.jpg differ
diff --git a/NPDocumentation/logo/NPTool1.0.png b/NPDocumentation/logo/NPTool1.0.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f0828efd3a830f908ef0dec4e3704b253d6be0e
Binary files /dev/null and b/NPDocumentation/logo/NPTool1.0.png differ
diff --git a/NPDocumentation/logo/NPTool1.0.xcf b/NPDocumentation/logo/NPTool1.0.xcf
new file mode 100644
index 0000000000000000000000000000000000000000..58666892c100d9693adba9a7cc3c557194f3a0be
Binary files /dev/null and b/NPDocumentation/logo/NPTool1.0.xcf differ
diff --git a/NPDocumentation/pictures/nptool_scheme_Ana.png b/NPDocumentation/pictures/nptool_scheme_Ana.png
new file mode 100644
index 0000000000000000000000000000000000000000..b30c35fc9c2c367c23edc409a8cc92d38c660f46
Binary files /dev/null and b/NPDocumentation/pictures/nptool_scheme_Ana.png differ
diff --git a/NPDocumentation/pictures/nptool_scheme_Sim.png b/NPDocumentation/pictures/nptool_scheme_Sim.png
new file mode 100644
index 0000000000000000000000000000000000000000..56f517dfd174d3a86a0c87c90270acd904645b0b
Binary files /dev/null and b/NPDocumentation/pictures/nptool_scheme_Sim.png differ
diff --git a/NPEnvironment.bash b/NPEnvironment.bash
index cf4896c979f7f48e16239de60a7f73b7f1c54d52..7e7d5183cfe65ec7f8b4ea15a44bf4993eb59419 100644
--- a/NPEnvironment.bash
+++ b/NPEnvironment.bash
@@ -16,3 +16,4 @@ alias NPT='cd $NPTOOL'
 alias NPL='cd $NPLIB'	
 alias NPS='cd $NPSIM'	
 alias NPA='cd $NPANA'
+ 
diff --git a/NPEnvironment.tchrc b/NPEnvironment.tchrc
index 43f970f282a2c91c5e084885418bc38d3b21683c..61ebdb79c3e740adf51dd1aa66ae63f57e87eab6 100644
--- a/NPEnvironment.tchrc
+++ b/NPEnvironment.tchrc
@@ -7,6 +7,7 @@ setenv NPLIB $NPTOOL/NPLib
 setenv NPSIM $NPTOOL/NPSimulation
 setenv NPANA $NPTOOL/NPAnalysis
 setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:$NPLIB/lib
+source $NPLIB/lib/liblist
 
 # alias
 alias Simulation '$NPSIM/bin/$G4SYSTEM/Simulation'
diff --git a/NPLib/AnnularS1/TS1Data.cxx b/NPLib/AnnularS1/TS1Data.cxx
index 96ba8d46714fba5c24abb240f4bf4b42c14c4ed0..e5224851600abf587d58a78e8cbce7909926d20d 100644
--- a/NPLib/AnnularS1/TS1Data.cxx
+++ b/NPLib/AnnularS1/TS1Data.cxx
@@ -71,7 +71,7 @@ void TS1Data::Clear()
 
 
 
-void TS1Data::Dump()
+void TS1Data::Dump() const
 {
    cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
 
diff --git a/NPLib/AnnularS1/TS1Data.h b/NPLib/AnnularS1/TS1Data.h
index d0a910d817c84aa4e4f9d1285b80672a397e079b..225f6e714cbbb9ec411a9c56f71b76378bbf0eda 100644
--- a/NPLib/AnnularS1/TS1Data.h
+++ b/NPLib/AnnularS1/TS1Data.h
@@ -61,7 +61,8 @@ class TS1Data : public TObject {
    virtual ~TS1Data();
 
    void	Clear();
-   void	Dump();
+   void Clear(const Option_t*) {};
+   void	Dump() const;
 
 
 
@@ -105,7 +106,7 @@ class TS1Data : public TObject {
    void	SetS1PhiTStripNbr(UShort_t Nr)		{fS1_Phi_T_StripNbr.push_back(Nr);}
    void	SetS1PhiTTime(Double_t T)		{fS1_Phi_T_Time.push_back(T);}
 
-   ClassDef(TS1Data,1)  // S1Data structure
+   ClassDef(TS1Data,2)  // S1Data structure
 };
 
 #endif
diff --git a/NPLib/CalibrationManager/CalibrationManager.cxx b/NPLib/CalibrationManager/CalibrationManager.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..085c08285c60962b323ad2a89135c9683dd309bb
--- /dev/null
+++ b/NPLib/CalibrationManager/CalibrationManager.cxx
@@ -0,0 +1,175 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : october 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ * This class manage the calibration coefficient of the detector in NPA      *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *   This class is a singleton                                               *
+ *                                                                           *
+ *****************************************************************************/
+#include "CalibrationManager.h"
+
+//	STL
+#include <cstdlib>
+#include <limits>
+#include <cmath>
+
+//////////////////////////////////////////////////////////////////
+CalibrationManager* CalibrationManager::instance = 0;
+
+CalibrationManager* CalibrationManager::getInstance(string configFileName)
+	{
+	   // A new instance of CalibrationManager is created if it does not exist:
+	   if (instance == 0) {
+	      instance = new CalibrationManager(configFileName);
+	   }
+
+	   // The instance of CalibrationManager is returned:
+	   return instance;
+	}
+	
+//////////////////////////////////////////////////////////////////
+CalibrationManager::CalibrationManager(string configFileName)
+	{
+   // Read configuration file Buffer
+   string lineBuffer, dataBuffer;
+
+   // Open file
+   ifstream inputConfigFile;
+   inputConfigFile.open(configFileName.c_str());
+	
+   cout << "/////////////////////////////////" << endl;
+   cout << "Getting list of Calibration File" << endl;
+
+   if (!inputConfigFile) {
+      cout << "Calibration Path file :" << configFileName << " not found " << endl; 
+      return;
+   }
+   
+   else {
+      while (!inputConfigFile.eof()) {
+         getline(inputConfigFile, lineBuffer);
+			      
+         // search for token giving the list of Root files to treat
+         if ( lineBuffer.compare(0, 12, "CalibrationFilePath") == 0 ) {
+             while (!inputConfigFile.eof()) {
+               inputConfigFile >> dataBuffer;
+
+               // ignore comment Line 
+               if (dataBuffer.compare(0, 1, "%") == 0) {
+                  inputConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+               }
+
+               else if (!inputConfigFile.eof()) {
+                  AddFile(dataBuffer);
+                  cout << "Adding file " << dataBuffer << " to Calibration" << endl;
+               }
+            }
+         }
+      }
+   }
+   cout << "/////////////////////////////////" << endl;}
+	
+//////////////////////////////////////////////////////////////////
+CalibrationManager::~CalibrationManager()
+	{}
+	
+//////////////////////////////////////////////////////////////////
+bool CalibrationManager::AddParameter(string DetectorName , string ParameterName , string Token )
+	{
+		string ParameterPath = DetectorName + "/" + ParameterName ;
+		fToken[Token] = ParameterPath ;
+		return true;
+	}
+
+//////////////////////////////////////////////////////////////////
+void CalibrationManager::LoadParameterFromFile()
+	{
+		ifstream CalibFile 	;
+		string	 DataBuffer	;
+		
+		for(unsigned int i = 0 ; i < fFileList.size() ; i++)
+			{
+				CalibFile.open( fFileList[i].c_str() );
+				vector<double> Coeff ;
+				map<string,string>::iterator it ;
+				
+				if(!CalibFile)
+					{
+						cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+						cout << " WARNING: FILE " << fFileList[i] << " IS MISSING " 																  	<< endl ;
+						cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+					
+					}
+					
+				else while( !CalibFile.eof() )
+							{
+								CalibFile >> DataBuffer ;
+								
+								//	Search word in the token list
+								it=fToken.find(DataBuffer);
+								
+								//	if the word is find, values are read
+								if( it!=fToken.end() )
+									{
+										
+										Coeff.clear();
+										while(DataBuffer!="\n")
+											{
+												CalibFile >> DataBuffer ; Coeff.push_back( atof(DataBuffer.c_str()) ) ;
+											}
+									
+										//	Check this parameter is not already define
+										if( fCalibrationCoeff.find(it->second) != fCalibrationCoeff.end() ) cout << "WARNING: Parameter " << it->second << " Already found. It will be rewritted " << endl;
+										
+										//	Add the list of Coeff to the Coeff map using Parameter Path as index
+										fCalibrationCoeff[ it->second ] = Coeff ;
+									}
+								
+							}
+					CalibFile.close() ;
+			}
+		
+	}
+
+//////////////////////////////////////////////////////////////////
+double CalibrationManager::ApplyCalibration(string ParameterPath , double RawValue)
+	{
+		double CalibratedValue = 0 ;
+		map< string , vector<double> >::iterator it ;
+		it = fCalibrationCoeff.find(ParameterPath)  ;
+		
+		if(it == fCalibrationCoeff.end() )
+			{
+			/*	cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;
+				cout << " ERROR: PARAMETER " << ParameterPath << " IS NOT FOUND IN THE CALIBRATION DATA BASE  " << endl ;
+				cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX " << endl ;*/
+				
+				return RawValue ;
+			}
+		
+		vector<double> Coeff = it->second  ;
+		
+		for(unsigned int i = 0 ; i < Coeff.size() ; i++)
+			{
+				CalibratedValue += Coeff[i]*pow(RawValue, (double)i);
+			}
+			
+		return CalibratedValue ;
+		
+	}
+//////////////////////////////////////////////////////////////////
+
+
diff --git a/NPLib/CalibrationManager/CalibrationManager.h b/NPLib/CalibrationManager/CalibrationManager.h
new file mode 100644
index 0000000000000000000000000000000000000000..69df3a9f7f5e1ed8ee4519c1dbeaaa488cdd128d
--- /dev/null
+++ b/NPLib/CalibrationManager/CalibrationManager.h
@@ -0,0 +1,81 @@
+#ifndef ConfigManager_h 
+#define ConfigManager_h 1
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : october 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ * This class manage the calibration coefficient of the detector in NPA      *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *   This class is a singleton                                               *
+ *                                                                           *
+ *****************************************************************************/
+//	STL
+#include<fstream>
+#include<iostream>
+#include<string>
+#include<vector>
+#include<map>
+
+using namespace std ;
+
+class CalibrationManager
+	{
+	
+		public:	//	Constructor and Destructor
+			CalibrationManager(string configFileName);
+			~CalibrationManager();
+	
+		public: // Accessor
+			//	return a pointer to the calibration manager instance.
+			//	if the instance does not exist it is created.
+			static CalibrationManager* getInstance(string configFileName="XXX");
+	
+		private: // the instance
+			//	Hold a pointer on itself
+			static CalibrationManager* instance ;
+	
+		public:	//	File Management
+			inline void AddFile(string Path) { fFileList.push_back(Path) ;} ;
+			
+			
+		public:	//	Declaration of Calibration
+		
+			// call like : myCalibrationManager->AddParameter( "MUST2" ,"Telescope5_Si_X38_E", "T5_Si_X38_E" )
+			// return false if the token is not found in the file list
+			bool AddParameter(string DetectorName , string ParameterName , string Token ) 		;		
+			
+			// call like : myCalibrationManager->ApplyCalibration( "MUST2/Telescope5_Si_X38_E" , RawEnergy )
+			// return the Calibrated value
+			double ApplyCalibration(string ParameterPath , double RawValue);
+		
+		
+			public:	//	To be called after initialisation
+				//	Loop over the file list and catch the file used for calibration
+				void LoadParameterFromFile();
+				
+		
+		private:
+			//	This map hold a vector of the calibration coefficient. Index is the Parameter path, like "MUST2/Telescope5_Si_X38_E"
+			map< string , vector<double> >	fCalibrationCoeff ;
+			
+			//	Hold the path of all the registered file of coeff
+			vector<string>	fFileList	;
+			
+			//	Hold The list of Token. Index is the Token, value the parameter path.
+			map< string , string >	fToken		;
+		
+	};
+	
+#endif
diff --git a/NPLib/CalibrationManager/Makefile b/NPLib/CalibrationManager/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..3b8a94b26d7f41761459dc181d3bf4f53badc91c
--- /dev/null
+++ b/NPLib/CalibrationManager/Makefile
@@ -0,0 +1,299 @@
+# Makefile for the ROOT test programs.
+# This Makefile shows nicely how to compile and link applications
+# using the ROOT libraries on all supported platforms.
+#
+# Copyright (c) 2000 Rene Brun and Fons Rademakers
+#
+# Author: Fons Rademakers, 29/2/2000
+
+ROOTCONFIG   := root-config
+
+ARCH         := $(shell $(ROOTCONFIG) --arch)
+PLATFORM     := $(shell $(ROOTCONFIG) --platform)
+ALTCC        := $(shell $(ROOTCONFIG) --cc)
+ALTCXX       := $(shell $(ROOTCONFIG) --cxx)
+ALTF77       := $(shell $(ROOTCONFIG) --f77)
+ALTLD        := $(shell $(ROOTCONFIG) --ld)
+
+#CXX           =
+ObjSuf        = o
+SrcSuf        = cxx
+ExeSuf        =
+DllSuf        = so
+OutPutOpt     = -o # keep whitespace after "-o"
+
+ifeq (debug,$(findstring debug,$(ROOTBUILD)))
+OPT           = -g
+OPT2          = -g
+else
+ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),)
+OPT           = -g
+OPT2          = -g
+else
+OPT           = -O
+OPT2          = -O2
+endif
+endif
+
+ROOTCFLAGS   := $(shell $(ROOTCONFIG) --cflags)
+ROOTLDFLAGS  := $(shell $(ROOTCONFIG) --ldflags)
+ROOTLIBS     := $(shell $(ROOTCONFIG) --libs)
+ROOTGLIBS    := $(shell $(ROOTCONFIG) --glibs)
+HASTHREAD    := $(shell $(ROOTCONFIG) --has-thread)
+ROOTDICTTYPE := $(shell $(ROOTCONFIG) --dicttype)
+NOSTUBS      := $(shell $(ROOTCONFIG) --nostubs)
+ROOTCINT     := rootcint
+
+ifeq ($(ARCH),linux)
+# Linux with egcs, gcc 2.9x, gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxkcc)
+# Linux with the KAI compiler
+CXX           = KCC --one_instantiation_per_object
+CXXFLAGS      = $(OPT) -fPIC +K0
+LD            = KCC
+LDFLAGS       = $(OPT) $(shell $(ROOTCONFIG) --cflags)
+SOFLAGS       =
+endif
+
+ifeq ($(ARCH),linuxicc)
+# Linux with Intel icc compiler
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppcgcc)
+# PPC Linux with gcc and glibc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64gcc)
+# Itanium Linux with gcc 2.9x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64sgi)
+# Itanium Linux with sgiCC
+CXX           = sgiCC
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = gsgiCC
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64ecc)
+# Itanium Linux with Intel icc (was ecc)
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -ftz
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664gcc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppc64gcc)
+# PPC64 Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664icc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -wd1572
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxalphagcc)
+# Alpha Linux with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxmips)
+# GNU/Linux on mips (BE/LE, O32/N32/N64) with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxhppa)
+# GNU/Linux on hppa with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxarm)
+# ARM Linux with egcs
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),macosx)
+# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3)
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = g++
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined $(UNDEFOPT)
+endif
+
+ifeq ($(ARCH),macosxicc)
+# MacOS X with Intel icc compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+ifeq ($(MACOSX_MINOR),5)
+MACOSX_MINOR := 4
+endif
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = $(MACOSXTARGET) icpc
+LDFLAGS       = $(OPT)
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosx64)
+# MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*)
+# Only specific option (-m64) comes from root-config
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++ -m64
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -m64 -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosxxlc)
+# MacOS X with IBM xlC compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = xlC
+CXXFLAGS      = $(OPT)
+LD            = $(MACOSXTARGET) xlC
+LDFLAGS       = $(OPT) -Wl,-bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+DllSuf        = dylib
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = xlC
+endif
+SOFLAGS       = -qmkshrobj -single_module -undefined $(UNDEFOPT)
+endif
+
+CXXFLAGS     += $(ROOTCFLAGS)
+LDFLAGS      += $(ROOTLDFLAGS)
+LIBS          = $(ROOTLIBS) $(SYSLIBS)
+GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
+
+INCLUDE		= -I$(CLHEP_BASE_DIR)/include
+ 
+#------------------------------------------------------------------------------
+SHARELIB      =  libCalibrationManager.so 
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## MUST2 ##
+libCalibrationManager.so:	CalibrationManager.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+		
+# dependances
+CalibrationManager.o:		CalibrationManager.cxx	CalibrationManager.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/DummyDetector/Makefile b/NPLib/DummyDetector/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..1d864a05a5312e340ec75ed81070789f66fa289f
--- /dev/null
+++ b/NPLib/DummyDetector/Makefile
@@ -0,0 +1,302 @@
+# Makefile for the ROOT test programs.
+# This Makefile shows nicely how to compile and link applications
+# using the ROOT libraries on all supported platforms.
+#
+# Copyright (c) 2000 Rene Brun and Fons Rademakers
+#
+# Author: Fons Rademakers, 29/2/2000
+
+ROOTCONFIG   := root-config
+
+ARCH         := $(shell $(ROOTCONFIG) --arch)
+PLATFORM     := $(shell $(ROOTCONFIG) --platform)
+ALTCC        := $(shell $(ROOTCONFIG) --cc)
+ALTCXX       := $(shell $(ROOTCONFIG) --cxx)
+ALTF77       := $(shell $(ROOTCONFIG) --f77)
+ALTLD        := $(shell $(ROOTCONFIG) --ld)
+
+#CXX           =
+ObjSuf        = o
+SrcSuf        = cxx
+ExeSuf        =
+DllSuf        = so
+OutPutOpt     = -o # keep whitespace after "-o"
+
+ifeq (debug,$(findstring debug,$(ROOTBUILD)))
+OPT           = -g
+OPT2          = -g
+else
+ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),)
+OPT           = -g
+OPT2          = -g
+else
+OPT           = -O
+OPT2          = -O2
+endif
+endif
+
+ROOTCFLAGS   := $(shell $(ROOTCONFIG) --cflags)
+ROOTLDFLAGS  := $(shell $(ROOTCONFIG) --ldflags)
+ROOTLIBS     := $(shell $(ROOTCONFIG) --libs)
+ROOTGLIBS    := $(shell $(ROOTCONFIG) --glibs)
+HASTHREAD    := $(shell $(ROOTCONFIG) --has-thread)
+ROOTDICTTYPE := $(shell $(ROOTCONFIG) --dicttype)
+NOSTUBS      := $(shell $(ROOTCONFIG) --nostubs)
+ROOTCINT     := rootcint
+
+ifeq ($(ARCH),linux)
+# Linux with egcs, gcc 2.9x, gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxkcc)
+# Linux with the KAI compiler
+CXX           = KCC --one_instantiation_per_object
+CXXFLAGS      = $(OPT) -fPIC +K0
+LD            = KCC
+LDFLAGS       = $(OPT) $(shell $(ROOTCONFIG) --cflags)
+SOFLAGS       =
+endif
+
+ifeq ($(ARCH),linuxicc)
+# Linux with Intel icc compiler
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppcgcc)
+# PPC Linux with gcc and glibc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64gcc)
+# Itanium Linux with gcc 2.9x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64sgi)
+# Itanium Linux with sgiCC
+CXX           = sgiCC
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = gsgiCC
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64ecc)
+# Itanium Linux with Intel icc (was ecc)
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -ftz
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664gcc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppc64gcc)
+# PPC64 Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664icc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -wd1572
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxalphagcc)
+# Alpha Linux with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxmips)
+# GNU/Linux on mips (BE/LE, O32/N32/N64) with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxhppa)
+# GNU/Linux on hppa with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxarm)
+# ARM Linux with egcs
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),macosx)
+# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3)
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = g++
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined $(UNDEFOPT)
+endif
+
+ifeq ($(ARCH),macosxicc)
+# MacOS X with Intel icc compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+ifeq ($(MACOSX_MINOR),5)
+MACOSX_MINOR := 4
+endif
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = $(MACOSXTARGET) icpc
+LDFLAGS       = $(OPT)
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosx64)
+# MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*)
+# Only specific option (-m64) comes from root-config
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++ -m64
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -m64 -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosxxlc)
+# MacOS X with IBM xlC compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = xlC
+CXXFLAGS      = $(OPT)
+LD            = $(MACOSXTARGET) xlC
+LDFLAGS       = $(OPT) -Wl,-bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+DllSuf        = dylib
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = xlC
+endif
+SOFLAGS       = -qmkshrobj -single_module -undefined $(UNDEFOPT)
+endif
+
+CXXFLAGS     += $(ROOTCFLAGS)
+LDFLAGS      += $(ROOTLDFLAGS)
+LIBS          = $(ROOTLIBS) $(SYSLIBS)
+GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
+
+INCLUDE		= -I$(CLHEP_BASE_DIR)/include
+ 
+#------------------------------------------------------------------------------
+SHARELIB      =  libDUMMYDetectorData.so 
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## DUMMYDetector ##
+libDUMMYDetectorData.so:	TDUMMYDetectorData.o	TDUMMYDetectorDataDict.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TDUMMYDetectorDataDict.cxx:	TDUMMYDetectorData.h
+			rootcint -f $@ -c $^
+
+# dependances
+TDUMMYDetectorData.o:	TDUMMYDetectorData.cxx	TDUMMYDetectorData.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/DummyDetector/TDUMMYDetectorData.cxx b/NPLib/DummyDetector/TDUMMYDetectorData.cxx
new file mode 100755
index 0000000000000000000000000000000000000000..1c15b58bdaa04b846a331cac3de2a18b26d11ee0
--- /dev/null
+++ b/NPLib/DummyDetector/TDUMMYDetectorData.cxx
@@ -0,0 +1,59 @@
+#include <iostream>
+#include "TDUMMYDetectorData.h"
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class described the raw data of a very simple DUMMYDetector         *
+ *	Use it as a template for your own detector!                              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+ClassImp(TDUMMYDetectorData)
+
+TDUMMYDetectorData::TDUMMYDetectorData()
+{
+}
+
+
+
+TDUMMYDetectorData::~TDUMMYDetectorData()
+{
+}
+
+
+
+void TDUMMYDetectorData::Clear()
+{
+    fDUMMYDetector_Energy.clear();
+    fDUMMYDetector_Number.clear();
+    fDUMMYDetector_Time.clear();
+}
+
+
+
+void TDUMMYDetectorData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
+
+	for(unsigned short i = 0 ; i<fDUMMYDetector_Energy.size() ; i ++)
+		{
+			cout << "DUMMYDetector Number " << fDUMMYDetector_Number[i] << " Energy: " << fDUMMYDetector_Energy[i]  << " Time: "<< fDUMMYDetector_Time[i] << endl;
+		
+		}
+   
+}
diff --git a/NPLib/DummyDetector/TDUMMYDetectorData.h b/NPLib/DummyDetector/TDUMMYDetectorData.h
new file mode 100755
index 0000000000000000000000000000000000000000..cc5c29fa18c8300f629b2c221e06e6d60d6e5d0e
--- /dev/null
+++ b/NPLib/DummyDetector/TDUMMYDetectorData.h
@@ -0,0 +1,72 @@
+#ifndef __DUMMYDetectorDATA__
+#define __DUMMYDetectorDATA__
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class described the raw data of a very simple DUMMY detector        *
+ *	Use it as a template for your own detector!                              *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+
+#include "TObject.h"
+using namespace std ;
+
+
+class TDUMMYDetectorData : public TObject {
+ private:
+   // ADC
+   vector<double>	  fDUMMYDetector_Energy	;	
+   vector<double>	  fDUMMYDetector_Time		;
+   vector<short>    fDUMMYDetector_Number	;
+   
+ public:
+   TDUMMYDetectorData();
+   virtual ~TDUMMYDetectorData();
+
+   void	Clear();
+   void	Clear(const Option_t*) {};
+   void	Dump() const;
+
+   /////////////////////           GETTERS           ////////////////////////
+   // (E)
+   double	GetEnergy(int i)			{return fDUMMYDetector_Energy[i];}
+   // (T)
+   double	GetTime(int i)				{return fDUMMYDetector_Time[i];}
+   // (N)
+   int      GetDUMMYDetectorNumber(int i)		{return fDUMMYDetector_Number[i];}
+   
+   
+   double	GetEnergySize()			{return fDUMMYDetector_Energy.size();}
+   // (T)
+   double	GetTimeSize()				{return fDUMMYDetector_Time.size();}
+   // (N)
+   int      GetDUMMYDetectorNumberSize()		{return fDUMMYDetector_Number.size();}
+   
+   
+   /////////////////////           SETTERS           ////////////////////////
+   // (E)
+   void	SetEnergy(double E)			{fDUMMYDetector_Energy.push_back(E);}
+   void	SetTime(double T)			{fDUMMYDetector_Time.push_back(T);}
+   void	SetDUMMYDetectorNumber(int N)		{fDUMMYDetector_Number.push_back(N);}
+   
+   //
+   ClassDef(TDUMMYDetectorData,1)  // DUMMYDetectorData structure
+};
+
+#endif
diff --git a/NPLib/GASPARD/GaspardTracker.cxx b/NPLib/GASPARD/GaspardTracker.cxx
index c6afac495de05ac57b9fd2a2dc6e1f795bac21c0..ee430b6cd09f6f03198c8e9429eff559047ded2f 100644
--- a/NPLib/GASPARD/GaspardTracker.cxx
+++ b/NPLib/GASPARD/GaspardTracker.cxx
@@ -536,6 +536,9 @@ void GaspardTracker::AddModuleSquare(TVector3 C_X1_Y1,
 {
    m_NumberOfModule++;
 
+   // remove warning using C_X128_Y128
+   C_X128_Y128.Unit();
+
    // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
    TVector3 U = C_X128_Y1 - C_X1_Y1;
    U = U.Unit();
@@ -692,6 +695,9 @@ void GaspardTracker::AddModuleDummyShape(TVector3 C_X1_Y1,
 {
    m_NumberOfModule++;
 
+   // remove warning using C_X128_Y128
+   C_X128_Y128.Unit();
+
    // Vector U on Module Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
    TVector3 U = C_X128_Y1 - C_X1_Y1;
    U = U.Unit();
@@ -796,7 +802,7 @@ void GaspardTracker::AddModuleDummyShape(double theta,
    V.Rotate( beta_w * Pi/180. , W ) ;
 
    double Face = 50; // mm
-   double NumberOfStrip = 128;
+   double NumberOfStrip = 25;
    double StripPitch = Face/NumberOfStrip; // mm
 
    vector<double> lineX;
diff --git a/NPLib/GASPARD/GaspardTracker.h b/NPLib/GASPARD/GaspardTracker.h
index e0d25a08bab1e7316a715f67c2a9dba4fd9df4d3..5de55bd49c53f3840d85969093c612f39452aa8c 100644
--- a/NPLib/GASPARD/GaspardTracker.h
+++ b/NPLib/GASPARD/GaspardTracker.h
@@ -37,7 +37,7 @@ class GaspardTracker : public NPA::VDetector
 {
 public:
    GaspardTracker();
-   ~GaspardTracker();
+   virtual ~GaspardTracker();
 
 public:
    /////////////////////////////////////
diff --git a/NPLib/GASPARD/TGaspardTrackerData.cxx b/NPLib/GASPARD/TGaspardTrackerData.cxx
index 72199549b2244e52310ea3480bd270d7d1f460e3..97ae3e74d203491dc7d409247d6830ea36f23385 100644
--- a/NPLib/GASPARD/TGaspardTrackerData.cxx
+++ b/NPLib/GASPARD/TGaspardTrackerData.cxx
@@ -89,7 +89,7 @@ void TGaspardTrackerData::Clear()
 
 
 
-void TGaspardTrackerData::Dump()
+void TGaspardTrackerData::Dump() const
 {
    cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
 
diff --git a/NPLib/GASPARD/TGaspardTrackerData.h b/NPLib/GASPARD/TGaspardTrackerData.h
index b88c42ff7d6aac07ca63ab644d4888f234d270ed..3be1dc39375ce6418a552254a29d82d12df23bbc 100644
--- a/NPLib/GASPARD/TGaspardTrackerData.h
+++ b/NPLib/GASPARD/TGaspardTrackerData.h
@@ -82,7 +82,8 @@ public:
    virtual ~TGaspardTrackerData();
 
    void  Clear();
-   void  Dump();
+   void  Clear(const Option_t*) {};
+   void  Dump() const;
 
    /////////////////////           SETTERS           ////////////////////////
    // DSSD
diff --git a/NPLib/GASPARD/TGaspardTrackerPhysics.cxx b/NPLib/GASPARD/TGaspardTrackerPhysics.cxx
index ac7dd1823d5e5fc680d668a867186153ad86c00b..8487f87751da5c57a52d2567d234347d9f7714bd 100644
--- a/NPLib/GASPARD/TGaspardTrackerPhysics.cxx
+++ b/NPLib/GASPARD/TGaspardTrackerPhysics.cxx
@@ -25,7 +25,6 @@
 #include <iostream>
 #include <cstdlib>
 
-using namespace std ;
 
 ClassImp(TGaspardTrackerPhysics)
 
@@ -66,11 +65,12 @@ void TGaspardTrackerPhysics::BuildPhysicalEvent(TGaspardTrackerData* Data)
    bool Check_FirstStage = false ;bool Check_SecondStage = false ; bool Check_ThirdStage = false ;
 
    // Thresholds
+/*
    double FirstStage_Front_E_Threshold = 0; double FirstStage_Front_T_Threshold = 0;
    double FirstStage_Back_E_Threshold  = 0; double FirstStage_Back_T_Threshold  = 0;
    double SecondStage_E_Threshold      = 0; double SecondStage_T_Threshold      = 0;
    double ThirdStage_E_Threshold       = 0; double ThirdStage_T_Threshold	= 0;
-
+*/
    // calculate multipicity in the first stage
    int multXE = Data->GetGPDTrkFirstStageFrontEMult();
    int multYE = Data->GetGPDTrkFirstStageBackEMult();
@@ -125,7 +125,7 @@ void TGaspardTrackerPhysics::BuildPhysicalEvent(TGaspardTrackerData* Data)
             FirstStage_Y.push_back(stripYE);
             // get energy from strips and store it
             double EnergyStripFront = Data->GetGPDTrkFirstStageFrontEEnergy(0);
-            double EnergyStripBack  = Data->GetGPDTrkFirstStageBackEEnergy(0);
+//            double EnergyStripBack  = Data->GetGPDTrkFirstStageBackEEnergy(0);
 //            double EnergyStrip  = 0.5 * (EnergyStripFront + EnergyStripBack);
             double EnergyStrip  = EnergyStripFront;
 //            if (EnergyStripBack > EnergyStrip) EnergyStrip = EnergyStripBack;
@@ -134,8 +134,8 @@ void TGaspardTrackerPhysics::BuildPhysicalEvent(TGaspardTrackerData* Data)
             // get time from strips and store it
             double TimeStripFront = Data->GetGPDTrkFirstStageFrontEEnergy(0);
             double TimeStripBack  = Data->GetGPDTrkFirstStageBackEEnergy(0);
-            double TimeStrip  = 0.5 * (EnergyStripFront + EnergyStripBack);
-//                  double TimeStrip  = EnergyStripFront;
+            double TimeStrip  = 0.5 * (TimeStripFront + TimeStripBack);
+//                  double TimeStrip  = TimeStripFront;
 //                  if (TimeStripBack > TimeStrip) TimeStrip = TimeStripBack;
             FirstStage_T.push_back(TimeStrip);
 
diff --git a/NPLib/GASPARD/TGaspardTrackerPhysics.h b/NPLib/GASPARD/TGaspardTrackerPhysics.h
index e23742bee88e73dcd8102bc39b627eecb6e0ec26..425d5e601e76a95d638d894893fa6492fc23cabd 100644
--- a/NPLib/GASPARD/TGaspardTrackerPhysics.h
+++ b/NPLib/GASPARD/TGaspardTrackerPhysics.h
@@ -27,6 +27,7 @@
 #include <vector>
 #include "TObject.h"
 #include "TGaspardTrackerData.h"
+#include <cstdlib>
 
 using namespace std ;
 
@@ -38,6 +39,7 @@ public:
 
 public: 
    void Clear();	
+   void Clear(const Option_t*) {};	
    void BuildPhysicalEvent(TGaspardTrackerData* Data);
    void BuildSimplePhysicalEvent(TGaspardTrackerData* Data);
 
diff --git a/NPLib/INSTALL b/NPLib/INSTALL
index 891fc0f3528d63be94b06b78281baf005c73b247..b93077b70d97a8fa963e57928a130d76561fd0b8 100644
--- a/NPLib/INSTALL
+++ b/NPLib/INSTALL
@@ -19,21 +19,33 @@
  *                                                                           *
  *****************************************************************************/
 
+I) REQUIREMENTS
+The GSL (Gnu Scientific Library) should be installed at this step as well as
+a ROOT version with the MathMore module.
+   + To install GSL, your distribution most likely provides a package. This is
+     the case for Debian / Ubuntu / Fedora / Mac Os X for example.
+   + To install ROOT's MathMore module, you have two options:
+      + Install the ROOT binary which contains support for MathMore. 
+      + Compile the ROOT source code with support for GSL (see this web page 
+        http://root.cern.ch/drupal/content/installing-root-source at the
+        GSL paragraph).
+
+The working GSL environement is needed for the NPEnergyLoss.{h,cxx} library
+in the Tools directory
+
+
+II) BUILDING NPLIB
 In order to build all the libraries of the NPLib module, use the two 
 following commands:
 	
-+  make distclean
+   + make distclean
 	Once this is done you should check that both the include and 
 	lib directories are empty. It this is not the case remove the 
 	remaining files manually.
 
-+ make
+   + make
 	Once this is done the headers of each subdirectory are copied to 
 	the include directory and the shared libraries (*.so) associated 
 	to each library are copied to the lib directory. If you are using 
 	a Mac OS system a symbolic link *.dylib is done with respect to 
 	each *.so library. 
-
-	Important note: 
-		You need a working installation of GSL when compiling the 
-		NPEnergyLoss.{h,cxx} library in the Tools directory.
diff --git a/NPLib/IORoot/RootInput.cxx b/NPLib/IORoot/RootInput.cxx
index d48d101bded2fe2d7e6a6bfa73a24f3f4cbae17b..327343c5ff756da039a2ace4878c0dd9c14f4b1e 100644
--- a/NPLib/IORoot/RootInput.cxx
+++ b/NPLib/IORoot/RootInput.cxx
@@ -21,6 +21,7 @@
 
 #include <iostream>
 #include <fstream>
+#include <limits>
 
 #include "RootInput.h"
 
@@ -89,7 +90,12 @@ RootInput::RootInput(string configFileName)
             while (!inputConfigFile.eof()) {
                inputConfigFile >> dataBuffer;
 
-               if (!inputConfigFile.eof()) {
+               // ignore comment Line 
+               if (dataBuffer.compare(0, 1, "%") == 0) {
+                  inputConfigFile.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
+               }
+
+               else if (!inputConfigFile.eof()) {
                   pRootChain->Add(dataBuffer.c_str());
                   cout << "Adding file " << dataBuffer << " to TChain" << endl;
                }
diff --git a/NPLib/IORoot/RootOutput.cxx b/NPLib/IORoot/RootOutput.cxx
index cd61a5186db0af883b3783b3ee1a4c3bae73750e..625edb299312ab1829bc9feebe92a41f891850e2 100644
--- a/NPLib/IORoot/RootOutput.cxx
+++ b/NPLib/IORoot/RootOutput.cxx
@@ -68,6 +68,7 @@ RootOutput::~RootOutput()
 {
    // The data is written to the file and the tree is closed:
    if (pRootFile) {
+      cout << endl;
       cout << "Got histograms and Tree !" << endl;
       pRootFile->Write();
       pRootFile->Close();
diff --git a/NPLib/InitialConditions/TInitialConditions.cxx b/NPLib/InitialConditions/TInitialConditions.cxx
index e76622b63d814b5b222b18969e06f52342a0b207..be597460ded1fc13e750111c15194a477cbf6d22 100644
--- a/NPLib/InitialConditions/TInitialConditions.cxx
+++ b/NPLib/InitialConditions/TInitialConditions.cxx
@@ -68,7 +68,7 @@ void TInitialConditions::Clear()
 
 
 
-void TInitialConditions::Dump()
+void TInitialConditions::Dump() const
 {
    cout << "XXXXXXXXXXXXX Initial conditions XXXXXXXXXXXXXXXX" << endl;
 
diff --git a/NPLib/InitialConditions/TInitialConditions.h b/NPLib/InitialConditions/TInitialConditions.h
index ab3a94278a5406358a7e493728c3aad251668f63..468e941d2ea92152d55524ceccf0cda2e1089a47 100644
--- a/NPLib/InitialConditions/TInitialConditions.h
+++ b/NPLib/InitialConditions/TInitialConditions.h
@@ -28,7 +28,6 @@
 
 #include <vector>
 #include "TObject.h"
-
 using namespace std ;
 
 
@@ -66,7 +65,8 @@ public:
    virtual ~TInitialConditions();
 
    void  Clear();
-   void  Dump();
+   void  Clear(const Option_t*) {};
+   void  Dump() const;
 
    /////////////////////           SETTERS           ////////////////////////
    // Incident particle properties (before interactions in the target)
diff --git a/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx b/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx
index 25e71b4f36ec59f741a4089304621bf14fcd12b9..624060e12b144eb54f64a5aeffbd5adcbba363eb 100644
--- a/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx
+++ b/NPLib/InteractionCoordinates/TInteractionCoordinates.cxx
@@ -52,7 +52,7 @@ void TInteractionCoordinates::Clear()
 
 
 
-void TInteractionCoordinates::Dump()
+void TInteractionCoordinates::Dump() const
 {
    cout << "XXXXXXXXXXXXX Interaction coordinates XXXXXXXXXXXXXXXX" << endl;
 
diff --git a/NPLib/InteractionCoordinates/TInteractionCoordinates.h b/NPLib/InteractionCoordinates/TInteractionCoordinates.h
index c722d5143db392458281f9b9925ce5aab901716f..ffd1fcc3c2eb4b0c10da88bdf23081d88802e64f 100644
--- a/NPLib/InteractionCoordinates/TInteractionCoordinates.h
+++ b/NPLib/InteractionCoordinates/TInteractionCoordinates.h
@@ -46,9 +46,13 @@ private:
 public:
    TInteractionCoordinates();
    virtual ~TInteractionCoordinates();
-
+/*
    void  Clear();
    void  Dump();
+*/
+   void  Clear();
+   void  Clear(const Option_t*) {};
+   void  Dump() const;
 
    /////////////////////           SETTERS           ////////////////////////
    // Incident particle properties (before interactions in the target)
diff --git a/NPLib/MUST2/Makefile b/NPLib/MUST2/Makefile
index e2438f2ea3c42877c75421393f1c85bd48911819..483202615d51fcbee2e1ed164a130262ccad451b 100644
--- a/NPLib/MUST2/Makefile
+++ b/NPLib/MUST2/Makefile
@@ -281,14 +281,13 @@ libMust2Data.so:	TMust2Data.o	TMust2DataDict.o
 TMust2DataDict.cxx:	TMust2Data.h
 			rootcint -f $@ -c $^
 
-libMust2Physics.so:	Must2Array.o	TMust2Physics.o	TMust2PhysicsDict.o
+libMust2Physics.so:	TMust2Physics.o	TMust2PhysicsDict.o
 		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
 
 TMust2PhysicsDict.cxx: TMust2Physics.h
 			rootcint -f $@ -c $^
 
 # dependances
-Must2Array.o:		Must2Array.cxx	Must2Array.h
 TMust2Data.o:		TMust2Data.cxx	TMust2Data.h
 TMust2Physics.o:	TMust2Physics.cxx	TMust2Physics.h
 #######################################
diff --git a/NPLib/MUST2/Must2Array.cxx b/NPLib/MUST2/Must2Array.cxx
deleted file mode 100644
index 630e036dd3eb8d2d345936862fa1fd4a78a37097..0000000000000000000000000000000000000000
--- a/NPLib/MUST2/Must2Array.cxx
+++ /dev/null
@@ -1,626 +0,0 @@
-#include "Must2Array.h"
-/*****************************************************************************
- * Copyright (C) 2009   this file is part of the NPTool Project              *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
- *                                                                           *
- * Creation Date  : febuary 2009                                             *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class manage the geometry of an array of MUST2 Telescope            *
- * 	It is used in NPAnalysis Programm                                        *
- *	It also meant to manage calibration file (to be done)                    *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *   Calibration need to be done                                             *
- *                                                                           *
- *****************************************************************************/
-//	STL
-#include <cmath>
-#include <iostream>	
-#include <fstream>
-#include <string>
-#include <stdlib.h>
-
-//	NPL
-#include "RootInput.h"
-#include "RootOutput.h"
-
-//	Root
-#include "TChain.h"
-
-using namespace std ;	
-	
-//	Default Constructor
-
-MUST2Array::MUST2Array()
-	{
-		NumberOfTelescope = 0				;
-		EventData = new TMust2Data 			;
-		EventPhysics = new TMust2Physics 	;
-	}	
-
-MUST2Array::~MUST2Array()
-	{
-		NumberOfTelescope = 0				;
-		delete EventData 			;
-		delete EventPhysics 	;
-	}	
-	
-				
-////	Innherited from VDetector Class	////				
-				
-//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
-void MUST2Array::ReadConfiguration(string Path) 	
-{
-   ifstream ConfigFile           	;
-   ConfigFile.open(Path.c_str()) 	;
-   string LineBuffer          		;
-   string DataBuffer          		;	
-
-   // A:X1_Y1     --> X:1    Y:1
-   // B:X128_Y1   --> X:128  Y:1
-   // C:X1_Y128   --> X:1    Y:128
-   // D:X128_Y128 --> X:128  Y:128
-
-   double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz           	;
-   TVector3 A , B , C , D                                          				;
-   double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0    ;
-   int SI = 0 , SILI = 0 , CSI = 0                                         		;	
-
-   bool check_A = false 	;
-   bool check_C = false  	;
-   bool check_B = false 	;
-   bool check_D = false  	;
-
-   bool check_Theta = false ;
-   bool check_Phi  	= false ;
-   bool check_R     = false ;
-   bool check_beta 	= false ;
-   
-   bool ReadingStatus = false ;
-	
-
-   while (!ConfigFile.eof()) 
-   	{
-      
-      	getline(ConfigFile, LineBuffer);
-
-		//	If line is a Start Up Must2 bloc, Reading toggle to true      
-      	if (LineBuffer.compare(0, 11, "M2Telescope") == 0) 
-	      	{
-	        	 cout << "///" << endl           		;
-	       		  cout << "Telescope found: " << endl   ;        
-	        	 ReadingStatus = true 					;
-	        	
-		   	}
-		
-		//	Else don't toggle to Reading Block Status
-		else ReadingStatus = false ;
-		
-		//	Reading Block
-		while(ReadingStatus)
-			{
-				 
-				ConfigFile >> DataBuffer ;
-				//	Comment Line 
-					if(DataBuffer.compare(0, 1, "%") == 0) {
-						 	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
-							
-						}
-			
-					//	Finding another telescope (safety), toggle out
-				else if (DataBuffer.compare(0, 11, "M2Telescope") == 0) {
-						cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
-						ReadingStatus = false ;
-						}
-			
-					//	Position method
-					
-		         else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
-		            check_A = true;
-		            ConfigFile >> DataBuffer ;
-		            Ax = atof(DataBuffer.c_str()) ;
-		            Ax = Ax  ;
-		            ConfigFile >> DataBuffer ;
-		            Ay = atof(DataBuffer.c_str()) ;
-		            Ay = Ay  ;
-		            ConfigFile >> DataBuffer ;
-		            Az = atof(DataBuffer.c_str()) ;
-		            Az = Az  ;
-
-		            A = TVector3(Ax, Ay, Az);
-		            cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl;
-		            
-		         }
-
-
-		         else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) {
-		            check_B = true;
-		            ConfigFile >> DataBuffer ;
-		            Bx = atof(DataBuffer.c_str()) ;
-		            Bx = Bx  ;
-		            ConfigFile >> DataBuffer ;
-		            By = atof(DataBuffer.c_str()) ;
-		            By = By  ;
-		            ConfigFile >> DataBuffer ;
-		            Bz = atof(DataBuffer.c_str()) ;
-		            Bz = Bz  ;
-
-		            B = TVector3(Bx, By, Bz);
-		            cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl;
-		            
-		         }
-		         
-
-		         else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) {
-		            check_C = true;
-		            ConfigFile >> DataBuffer ;
-		            Cx = atof(DataBuffer.c_str()) ;
-		            Cx = Cx  ;
-		            ConfigFile >> DataBuffer ;
-		            Cy = atof(DataBuffer.c_str()) ;
-		            Cy = Cy  ;
-		            ConfigFile >> DataBuffer ;
-		            Cz = atof(DataBuffer.c_str()) ;
-		            Cz = Cz  ;
-
-		            C = TVector3(Cx, Cy, Cz);
-		            cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl;
-		           
-		         }
-
-		         else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) {
-		            check_D = true;
-		            ConfigFile >> DataBuffer ;
-		            Dx = atof(DataBuffer.c_str()) ;
-		            Dx = Dx  ;
-		            ConfigFile >> DataBuffer ;
-		            Dy = atof(DataBuffer.c_str()) ;
-		            Dy = Dy  ;
-		            ConfigFile >> DataBuffer ;
-		            Dz = atof(DataBuffer.c_str()) ;
-		            Dz = Dz  ;
-
-		            D = TVector3(Dx, Dy, Dz);
-		            cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl;
-		           
-		         }
-			
-				//	End Position Method
-
-		         //	Angle method
-		         else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
-		            check_Theta = true;
-		            ConfigFile >> DataBuffer ;
-		            Theta = atof(DataBuffer.c_str()) ;
-		            Theta = Theta ;
-		            cout << "Theta:  " << Theta << endl;
-		            
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
-		            check_Phi = true;
-		            ConfigFile >> DataBuffer ;
-		            Phi = atof(DataBuffer.c_str()) ;
-		            Phi = Phi ;
-		            cout << "Phi:  " << Phi << endl;
-		          
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 2, "R=") == 0) {
-		            check_R = true;
-		            ConfigFile >> DataBuffer ;
-		            R = atof(DataBuffer.c_str()) ;
-		            R = R ;
-		            cout << "R:  " << R << endl;
-		          
-		         }
-
-		         //Angle method
-		         else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
-		            check_beta = true;
-		            ConfigFile >> DataBuffer ;
-		            beta_u = atof(DataBuffer.c_str()) ;
-		            beta_u = beta_u    ;
-		            ConfigFile >> DataBuffer ;
-		            beta_v = atof(DataBuffer.c_str()) ;
-		            beta_v = beta_v    ;
-		            ConfigFile >> DataBuffer ;
-		            beta_w = atof(DataBuffer.c_str()) ;
-		            beta_w = beta_w    ;
-		            cout << "Beta:  " << beta_u << " " << beta_v << " " << beta_w << endl  ;
-		            
-		         }
-		              
-		         /////////////////////////////////////////////////
-		         //	If All necessary information there, toggle out
-		         if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta)  ) 
-		         	{ 
-		         	ReadingStatus = false; 
-		         	
-		         	///Add The previously define telescope
-         			//With position method
-		         	if ( check_A && check_B && check_C && check_D ) 
-		         		{
-				            AddTelescope(	A   ,
-				                  			B   ,
-				                 			C   ,
-				                  			D   ) ;
-				         }
-		         	
-		         	    //with angle method
-       				  else if ( check_Theta && check_Phi && check_R && check_beta ) 
-       				  	{
-				            AddTelescope(	Theta   ,
-				                  			Phi   	,
-				                  			R       ,
-				                  			beta_u  ,
-				                  			beta_v  ,
-				                  			beta_w  );
-      					}
-								
-			        	check_A = false 	;
-						check_B = false 	;
-		  				check_C = false  	;
-		  				check_D = false  	;
-
-		   				check_Theta = false   	;
-		   				check_Phi  = false  	;
-		   				check_R    = false   	;
-		   				check_beta = false  	;
-					
-		         	}
-		         
-		}
-		        
-		        
-		    
-		         	
-	}
-	
-	cout << endl << "/////////////////////////////" << endl<<endl;
-
-}
-
-
-//	Read stream at Path and pick-up calibration parameter using Token
-//	If argument is "Simulation" no change calibration is loaded
-void MUST2Array::ReadCalibrationFile(string Path)	
-	{
-		
-		//	Order of Polynom function used for calibration
-		int Calibration_Si_E_Order 		;
-		int Calibration_Si_T_Order 		;
-		int Calibration_SiLi_E_Order 	;
-		int Calibration_CsI_E_Order 	;
-		
-		//	Calibration_Si_X_E[DetectorNumber][StripNumber][Order of Coeff]
-		vector< vector< vector< double > > >	Calibration_Si_X_E	;
-		vector< vector< vector< double > > >	Calibration_Si_X_T	;
-		
-		vector< vector< vector< double > > >	Calibration_Si_Y_E	;
-		vector< vector< vector< double > > >	Calibration_Si_Y_T	;
-	
-		//	Calibration_SiLi_E[DetectorNumber][PadNumber][Order of Coeff]
-		vector< vector< vector< double > > >	Calibration_SiLi_E	;
-		
-		//	Calibration_SiLi_E[DetectorNumber][CrystalNumber][Order of Coeff]
-		vector< vector< vector< double > > >	Calibration_CsI_E	;
-	
-		if(Path == "Simulation")	//	Simulation case: data already calibrated
-			{
-				Calibration_Si_E_Order		=	1 		;
-				Calibration_Si_T_Order 		=	1		;
-				Calibration_SiLi_E_Order 	=	1		;
-				Calibration_CsI_E_Order 	=	1		;
-				
-				vector<double> Coef;
-				//	Order 0				Order 1
-				Coef.push_back(0) ; Coef.push_back(1) 	;
-				
-				vector< vector<double> > StripLine 		;
-				StripLine.resize( 128 , Coef)			;
-				
-				Calibration_Si_X_E.resize( NumberOfTelescope , StripLine)	;
-				Calibration_Si_X_T.resize( NumberOfTelescope , StripLine)	;
-				
-				Calibration_Si_Y_E.resize( NumberOfTelescope , StripLine)	;
-				Calibration_Si_Y_T.resize( NumberOfTelescope , StripLine)	;
-				
-				Calibration_SiLi_E.resize( NumberOfTelescope , StripLine)	;
-				Calibration_CsI_E .resize( NumberOfTelescope , StripLine)	;
-			}
-			
-		else
-			{
-				
-			
-			}
-	}		
-	
-
-//	Activated associated Branches and link it to the private member DetectorData address
-//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
-void MUST2Array::InitializeRootInput() 		
-	{
-		TChain* inputChain = RootInput::getInstance()->GetChain()	;
-		inputChain->SetBranchStatus( "MUST2" , true )				;
-		inputChain->SetBranchStatus( "fMM_*" , true )				;
-		inputChain->SetBranchAddress( "MUST2" , &EventData )		;
-	}
-
-
-//	Create associated branches and associated private member DetectorPhysics address
-void MUST2Array::InitializeRootOutput() 	
-	{
-		TTree* outputTree = RootOutput::getInstance()->GetTree()		;
-		outputTree->Branch( "MUST2" , "TMust2Physics" , &EventPhysics )	;
-	}
-
-
-//	This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
-void MUST2Array::BuildPhysicalEvent()		
-	{
-		EventPhysics -> BuildPhysicalEvent(EventData)	;
-	}
-
-
-//	Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
-//	This method aimed to be used for analysis performed during experiment, when speed is requiered.
-//	NB: This method can eventually be the same as BuildPhysicalEvent.
-void MUST2Array::BuildSimplePhysicalEvent()	
-	{
-		EventPhysics -> BuildSimplePhysicalEvent(EventData)	;
-	}
-
-
-
-/////	Specific to MUST2Array	////
-
-void MUST2Array::AddTelescope(	TVector3 C_X1_Y1 		,
-			 					TVector3 C_X128_Y1 		, 
-			 					TVector3 C_X1_Y128 		, 
-			 					TVector3 C_X128_Y128	)
-	{
-		NumberOfTelescope++;
-	
-		//	Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
-		TVector3 U = C_X1_Y1 - C_X128_Y1 				;	
-		U = U.Unit()									;
-		//	Vector V on Telescope Face (parallele to X Strip)
-		TVector3 V = C_X128_Y128 - C_X128_Y1 				;
-		V = V.Unit()									;
-
-		//	Position Vector of Strip Center
-		TVector3 StripCenter = TVector3(0,0,0)			;
-		//	Position Vector of X=1 Y=1 Strip 
-		TVector3 Strip_1_1 								;		
-
-		//	Geometry Parameter
-		double Face = 98 					  	; //mm
-		double NumberOfStrip = 128 				; 
-		double StripPitch = Face/NumberOfStrip	; //mm
-
-		//	Buffer object to fill Position Array
-		vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-
-		vector< vector< double > >	OneTelescopeStripPositionX	;
-		vector< vector< double > >	OneTelescopeStripPositionY	;
-		vector< vector< double > >	OneTelescopeStripPositionZ	;
-		
-		//	Moving StripCenter to 1.1 corner:
-		Strip_1_1 = C_X128_Y1 + (U+V) * (StripPitch/2.) 	;
-
-		for( int i = 0 ; i < 128 ; i++ )
-			{
-				lineX.clear()	;
-				lineY.clear()	;
-				lineZ.clear()	;
-				
-				for( int j = 0 ; j < 128 ; j++ )
-					{
-						StripCenter  = Strip_1_1 + StripPitch*( i*U + j*V  )	;
-						//StripCenter += -TargetPosition		;
-						
-						lineX.push_back( StripCenter.X() )	;
-						lineY.push_back( StripCenter.Y() )	;
-						lineZ.push_back( StripCenter.Z() )	;	
-					}
-					
-				OneTelescopeStripPositionX.push_back(lineX)	;
-				OneTelescopeStripPositionY.push_back(lineY)	;
-				OneTelescopeStripPositionZ.push_back(lineZ)	;
-			 	
-			}
-	
-		
-		StripPositionX.push_back( OneTelescopeStripPositionX ) ;
-		StripPositionY.push_back( OneTelescopeStripPositionY ) ;
-		StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;	
-
-	}
-				
-				
-void MUST2Array::AddTelescope(	double theta 	, 
-								double phi 		, 
-								double distance , 
-								double beta_u 	, 
-								double beta_v 	, 
-								double beta_w	)
-	{
-	
-		NumberOfTelescope++;
-	
-		double Pi = 3.141592654 ;
-
-		// convert from degree to radian:
-		theta = theta * Pi/180. ; 
-		phi   = phi   * Pi/180. ;
-
-		//Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
-		TVector3 U ;	
-		//Vector V on Telescope Face (parallele to X Strip)
-		TVector3 V ;
-		//Vector W normal to Telescope Face (pointing CsI)
-		TVector3 W ;
-		//Vector position of Telescope Face center
-		TVector3 C ;
-			
-		C = TVector3 (	distance * sin(theta) * cos(phi) ,
-						distance * sin(theta) * sin(phi) ,
-						distance * cos(theta)			 );
-		
-    	TVector3 P = TVector3(	cos(theta ) * cos(phi)	, 
-    							cos(theta ) * sin(phi)	,
-    							-sin(theta)				);
-		
-		W = C.Unit() ;
-		U = W .Cross ( P ) ;
-	    V = W .Cross ( U );
-		
-		U = U.Unit();
-		V = V.Unit();
-		
-		U.Rotate( beta_u * Pi/180. , U ) ;
-		V.Rotate( beta_u * Pi/180. , U ) ;
-		
-		U.Rotate( beta_v * Pi/180. , V ) ;
-		V.Rotate( beta_v * Pi/180. , V ) ;
-		
-		U.Rotate( beta_w * Pi/180. , W ) ;
-		V.Rotate( beta_w * Pi/180. , W ) ;
-		
-		double Face = 98 					  	; //mm
-		double NumberOfStrip = 128 				;
-		double StripPitch = Face/NumberOfStrip	; //mm
-
-		vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
-		
-		vector< vector< double > >	OneTelescopeStripPositionX	;
-		vector< vector< double > >	OneTelescopeStripPositionY	;
-		vector< vector< double > >	OneTelescopeStripPositionZ	;
-		
-		double X , Y , Z  ;
-
-		//Moving C to the 1.1 corner:
-		C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) )  ; 
-		C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) )  ; 
-		C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) )  ; 
-	
-		for( int i = 0 ; i < 128 ; i++ )
-			{
-				
-				lineX.clear()	;
-				lineY.clear()	;
-				lineZ.clear()	;
-				
-				for( int j = 0 ; j < 128 ; j++ )
-					{
-						X = C.X() + StripPitch * ( U.X()*i + V.X()*j )	;
-						Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j )	;
-						Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j )	;
-									
-						lineX.push_back(X)	;
-						lineY.push_back(Y)	;
-						lineZ.push_back(Z)	;		
-						
-					}
-				
-				OneTelescopeStripPositionX.push_back(lineX)	;
-				OneTelescopeStripPositionY.push_back(lineY)	;
-				OneTelescopeStripPositionZ.push_back(lineZ)	;
-			 	
-			}
-		StripPositionX.push_back( OneTelescopeStripPositionX ) ;
-		StripPositionY.push_back( OneTelescopeStripPositionY ) ;
-		StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;
-	}
-	
-double MUST2Array::GetEnergyDeposit()		
-	{ 
-		if(EventPhysics->TotalEnergy.size()>0)
-		return EventPhysics->TotalEnergy[0] ; 
-		else return -1000 ;
-	}	
-	
-	
-	
-TVector3 MUST2Array::GetPositionOfInteraction()
-	{
-		TVector3 Position = TVector3(-1000,-1000,-1000);
-		
-		if(EventPhysics->TelescopeNumber.size()==1)
-		{
-				Position = TVector3 (	GetStripPositionX( EventPhysics->TelescopeNumber[0] , EventPhysics->Si_X[0] , EventPhysics->Si_Y[0] ) 	,
-										GetStripPositionY( EventPhysics->TelescopeNumber[0] , EventPhysics->Si_X[0] , EventPhysics->Si_Y[0] )	,
-										GetStripPositionZ( EventPhysics->TelescopeNumber[0] , EventPhysics->Si_X[0] , EventPhysics->Si_Y[0] )	) ;
-		}
-		
-		return(Position) ;	
-	
-	}
-	
-TVector3 MUST2Array::GetTelescopeNormal()
-	{
-		TVector3 Normal = TVector3(-1000,-1000,-1000);
-		
-		if(EventPhysics->TelescopeNumber.size()==1)
-		{
-				TVector3 U = TVector3 (		GetStripPositionX( EventPhysics->TelescopeNumber[0] , 128 , 1 ) 	,
-											GetStripPositionY( EventPhysics->TelescopeNumber[0] , 128 , 1 )		,
-											GetStripPositionZ( EventPhysics->TelescopeNumber[0] , 128 , 1 )		)
-											
-							- TVector3 (	GetStripPositionX( EventPhysics->TelescopeNumber[0] , 1 , 1 ) 		,
-											GetStripPositionY( EventPhysics->TelescopeNumber[0] , 1 , 1 )		,
-											GetStripPositionZ( EventPhysics->TelescopeNumber[0] , 1 , 1 )		);
-										
-				TVector3 V = TVector3 (		GetStripPositionX( EventPhysics->TelescopeNumber[0] , 128 , 128 ) 	,
-											GetStripPositionY( EventPhysics->TelescopeNumber[0] , 128 , 128 )	,
-											GetStripPositionZ( EventPhysics->TelescopeNumber[0] , 128 , 128 )	)
-											
-							- TVector3 (	GetStripPositionX( EventPhysics->TelescopeNumber[0] , 128 , 1 ) 	,
-											GetStripPositionY( EventPhysics->TelescopeNumber[0] , 128 , 1 )		,
-											GetStripPositionZ( EventPhysics->TelescopeNumber[0] , 128 , 1 )		);
-											
-				Normal = U.Cross(V);
-		}
-		
-		return(Normal.Unit()) ;	
-	
-	}	
-	
-	
-void MUST2Array::Print()
-	{
-		cout << "Number of telescope : " << NumberOfTelescope << endl ;
-		for( int f = 0 ; f < NumberOfTelescope ; f++)
-			{
-				cout << "Telescope " << f+1 << endl ;
-			
-				for( int i = 0 ; i < 128 ; i++ )
-					{
-			
-						for( int j = 0 ; j < 128 ; j++ )
-							{
-							cout << i+1 << "  "<< j+1 << "  " 
-							<< StripPositionX[f][i][j]   << "  " 
-							<< StripPositionY[f][i][j]   << "  "
-							<< StripPositionZ[f][i][j]   << "  " 
-							<< endl ;
-							}	
-					}
-
-			}
-	}
-									
-
diff --git a/NPLib/MUST2/Must2Array.h b/NPLib/MUST2/Must2Array.h
deleted file mode 100644
index 1ffa0518cc2946c86f08a30651ccd05760eb3429..0000000000000000000000000000000000000000
--- a/NPLib/MUST2/Must2Array.h
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifndef MUST2Array_H
-/*****************************************************************************
- * Copyright (C) 2009   this file is part of the NPTool Project              *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
- *                                                                           *
- * Creation Date  : febuary 2009                                             *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class manage the geometry of an array of MUST2 Telescope            *
- * 	It is used in NPAnalysis Programm                                        *
- *	It also meant to manage calibration file (to be done)                    *
- *                                                                           *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *   Calibration need to be done                                             *
- *                                                                           *
- *****************************************************************************/
-// NPL
-#include "../include/VDetector.h"
-#include "TMust2Data.h"
-#include "TMust2Physics.h"
-
-// Root
-#include "TVector3.h"
-
-class MUST2Array : public NPA::VDetector
-	{
-			public:	//	Default Constructor
-				MUST2Array()	;
-				~MUST2Array()	;
-	
-			public:		//	Innherited from VDetector Class
-			
-				//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
-				void ReadConfiguration(string) 				;
-				
-
-				//	Read stream at CalibFile and pick-up calibration parameter using Token
-				//	If argument is "Simulation" no change calibration is loaded
-				void ReadCalibrationFile(string)	 		;		
-					
-				
-				//	Activated associated Branches and link it to the private member DetectorData address
-				//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
-				void InitializeRootInput() 					;
-
-
-				//	Create associated branches and associated private member DetectorPhysics address
-				void InitializeRootOutput() 		 		;
-				
-				
-				//	This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
-				void BuildPhysicalEvent()					;
-				
-				
-				//	Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
-				//	This method aimed to be used for analysis performed during experiment, when speed is requiered.
-				//	NB: This method can eventually be the same as BuildPhysicalEvent.
-				void BuildSimplePhysicalEvent()				;
-
-				//	Those two method all to clear the Event Physics or Data
-				void ClearEventPhysics()		{EventPhysics->Clear();}		
-				void ClearEventData()			{EventData->Clear();}		
-
-
-			public:		//	Specific to MUST2Array
-				//	Add a Telescope using Corner Coordinate information
-				void AddTelescope(	TVector3 C_X1_Y1 		,
-			 						TVector3 C_X128_Y1 		, 
-			 						TVector3 C_X1_Y128 		, 
-			 						TVector3 C_X128_Y128	);
-				
-				//	Add a Telescope using R Theta Phi of Si center information
-				void AddTelescope(	double theta 	, 
-									double phi 		, 
-									double distance , 
-									double beta_u 	, 
-									double beta_v 	, 
-									double beta_w	);
-									
-				double GetStripPositionX( int N , int X , int Y )	{ return StripPositionX[N-1][X-1][Y-1] ; };
-				double GetStripPositionY( int N , int X , int Y )	{ return StripPositionY[N-1][X-1][Y-1] ; };
-				double GetStripPositionZ( int N , int X , int Y )	{ return StripPositionZ[N-1][X-1][Y-1] ; };
-
-				double GetNumberOfTelescope() 	{ return NumberOfTelescope ; }			;
-
-				// To be called after a build Physical Event 
-				
-				double GetEnergyDeposit() ;
-				
-				TVector3 GetPositionOfInteraction();
-				TVector3 GetTelescopeNormal()		;
-				void Print()	;
-
-			private:	//	Root Input and Output tree classes
-				
-				TMust2Data* 	EventData		;
-				TMust2Physics* 	EventPhysics	;
-
-
-			private:	//	Spatial Position of Strip Calculated on bases of detector position
-			
-				int NumberOfTelescope	;
-			
-				vector< vector < vector < double > > >	StripPositionX			;
-				vector< vector < vector < double > > >	StripPositionY			;
-				vector< vector < vector < double > > >	StripPositionZ			;
-
-	};
-
-#endif
diff --git a/NPLib/MUST2/TMust2Data.cxx b/NPLib/MUST2/TMust2Data.cxx
index a8b1b3701c8058612582f48fdcae12df39909120..308e52a0b8d581e4b55d819dd2cd584245e767f3 100644
--- a/NPLib/MUST2/TMust2Data.cxx
+++ b/NPLib/MUST2/TMust2Data.cxx
@@ -111,7 +111,7 @@ void TMust2Data::Clear()
 
 
 
-void TMust2Data::Dump()
+void TMust2Data::Dump() const
 {
    cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
 
diff --git a/NPLib/MUST2/TMust2Data.h b/NPLib/MUST2/TMust2Data.h
index 804cc7f93e52c4b23611eb6ddf4c1a7420e5057b..654e999cdb441c7e62ae992f3b80cef83acd05fd 100644
--- a/NPLib/MUST2/TMust2Data.h
+++ b/NPLib/MUST2/TMust2Data.h
@@ -72,7 +72,8 @@ class TMust2Data : public TObject {
 		virtual ~TMust2Data();
 
 		void	Clear();
-		void	Dump();
+                void    Clear(const Option_t*) {};
+		void	Dump() const;
 
 		/////////////////////           SETTERS           ////////////////////////
 		// DSSD
@@ -138,12 +139,12 @@ class TMust2Data : public TObject {
 
 		// SiLi
 		//(E)
-		UShort_t	GetMMSiLiEMult()				{return fMM_SiLiE_DetectorNbr.size();}
+		UShort_t	GetMMSiLiEMult()								{return fMM_SiLiE_DetectorNbr.size();}
 		UShort_t	GetMMSiLiEDetectorNbr(Int_t i)  {return fMM_SiLiE_DetectorNbr.at(i);}
 		UShort_t	GetMMSiLiEPadNbr(Int_t i)       {return fMM_SiLiE_PadNbr.at(i);}
 		Double_t	GetMMSiLiEEnergy(Int_t i)       {return fMM_SiLiE_Energy.at(i);}
 		//(T)
-		UShort_t	GetMMSiLiTMult()				{return fMM_SiLiT_DetectorNbr.size();}
+		UShort_t	GetMMSiLiTMult()								{return fMM_SiLiT_DetectorNbr.size();}
 		UShort_t	GetMMSiLiTDetectorNbr(Int_t i)  {return fMM_SiLiT_DetectorNbr.at(i);}
 		UShort_t	GetMMSiLiTPadNbr(Int_t i)       {return fMM_SiLiT_PadNbr.at(i);}
 		Double_t	GetMMSiLiTTime(Int_t i)         {return fMM_SiLiT_Time.at(i);}
@@ -160,7 +161,7 @@ class TMust2Data : public TObject {
 		UShort_t	GetMMCsITCristalNbr(Int_t i)    {return fMM_CsIT_CristalNbr.at(i);}
 		Double_t	GetMMCsITTime(Int_t i)          {return fMM_CsIT_Time.at(i);}
 
-		ClassDef(TMust2Data,1)  // Must2Data structure
+		ClassDef(TMust2Data,2)  // Must2Data structure
 };
 
 #endif
diff --git a/NPLib/MUST2/TMust2Physics.cxx b/NPLib/MUST2/TMust2Physics.cxx
index 14f2cc6b0797b1177400154494ccfa98473a5aa7..4cd918223b2ae842225aa0c02b6217b5b48634cd 100644
--- a/NPLib/MUST2/TMust2Physics.cxx
+++ b/NPLib/MUST2/TMust2Physics.cxx
@@ -21,238 +21,410 @@
  *                                                                           *
  *****************************************************************************/
 #include "TMust2Physics.h"
+using namespace LOCAL;
+	
+//	STL
+#include <sstream>
 #include <iostream>
+#include <cmath>
+#include <stdlib.h>
 
-ClassImp(TMust2Physics)
-
-TMust2Physics::TMust2Physics() 
-	{ EventMultiplicity = 0 ;}
+//	NPL
+#include "RootInput.h"
+#include "RootOutput.h"
 
-TMust2Physics::~TMust2Physics() {Clear();}
+//	ROOT
+#include "TChain.h"
+///////////////////////////////////////////////////////////////////////////
 
-void TMust2Physics::BuildSimplePhysicalEvent(TMust2Data* Data)
-	{
-		BuildPhysicalEvent(Data);
-	}
-void TMust2Physics::BuildPhysicalEvent(TMust2Data* Data)
+ClassImp(TMust2Physics)
+///////////////////////////////////////////////////////////////////////////
+TMust2Physics::TMust2Physics() 
 	{ 
-		//	Check
-		bool Check_Si = false ;bool Check_SiLi = false ; bool Check_CsI = false ;
-		
-		// Threshold
-		double Si_X_E_Threshold = 0		;	double Si_X_T_Threshold = 0 	;
-		double Si_Y_E_Threshold = 0		;	double Si_Y_T_Threshold = 0		;
-		double SiLi_E_Threshold = 0		;	double SiLi_T_Threshold = 0		;
-		double CsI_E_Threshold	= 0 	;	double CsI_T_Threshold	= 0		;
+		EventMultiplicity = 0 			;
+		EventData = new TMust2Data	;
+		EventPhysics = this					;
+	}
 		
-		//	Multiplicity 1
-		if( Data->GetMMStripXEMult()==1 && Data->GetMMStripYEMult()==1 && Data->GetMMStripXTMult()==1 && Data->GetMMStripXTMult()==1 )
+///////////////////////////////////////////////////////////////////////////
+void TMust2Physics::BuildSimplePhysicalEvent()
+	{ 
+		BuildPhysicalEvent(); 
+	
+	}
+	
+///////////////////////////////////////////////////////////////////////////
+	
+void TMust2Physics::BuildPhysicalEvent()
+	{ 
+		bool check_SILI = false ;
+		bool check_CSI  = false ;
+	
+	
+		if( CheckEvent() == 1 )
 			{
+				vector< TVector2 > couple = Match_X_Y() ;
 				
-				if( //Same detector
-						Data->GetMMStripXEDetectorNbr(0) == Data->GetMMStripXTDetectorNbr(0)
-					&&	Data->GetMMStripXTDetectorNbr(0) == Data->GetMMStripYTDetectorNbr(0)
-					&&	Data->GetMMStripYTDetectorNbr(0) == Data->GetMMStripYEDetectorNbr(0) 
-					
-					// Same strip
-					&&	Data->GetMMStripXEStripNbr(0) == Data->GetMMStripXTStripNbr(0)
-					&&	Data->GetMMStripYEStripNbr(0) == Data->GetMMStripYTStripNbr(0)      )
+				for(unsigned int i = 0 ; i < couple.size() ; i++)
 					{
-						TelescopeNumber.push_back(Data->GetMMStripXEDetectorNbr(0))	;
+						check_SILI = false ;
+						check_CSI = false ;
 					
-						//	Data->Get Max Energy
-						if(Data->GetMMStripXEEnergy(0) > Data->GetMMStripYEEnergy(0))	Si_E.push_back( Data->GetMMStripXEEnergy(0) ) ;
-						else															Si_E.push_back( Data->GetMMStripYEEnergy(0) ) ;
+						int N = EventData->GetMMStripXEDetectorNbr(couple[i].X())		;
 						
-						//	Data->Get Min Time
-						if(Data->GetMMStripXTTime(0) < Data->GetMMStripYTTime(0))		Si_T.push_back( Data->GetMMStripXTTime(0) ) ;
-						else															Si_T.push_back( Data->GetMMStripYTTime(0) ) ;
+						int X = EventData->GetMMStripXEStripNbr(couple[i].X())			;
+						int Y = EventData->GetMMStripYEStripNbr(couple[i].Y())			;
 						
-						Si_X.push_back( Data->GetMMStripXEStripNbr(0) )	;
-						Si_Y.push_back( Data->GetMMStripYEStripNbr(0) )	;	
-						
-						Check_Si = true ;			
-						EventMultiplicity = 1;
-								
-					}
+						double Si_X_E = fSi_X_E(EventData , couple[i].X())	;
+						double Si_Y_E = fSi_Y_E(EventData , couple[i].Y())	;
+
+						double Si_X_T = fSi_X_T(EventData , couple[i].X())		;
+						double Si_Y_T = fSi_Y_T(EventData , couple[i].Y())		;
 					
-				
-				// FIXME we have to resolve case where SiLi/CsI mult > Si mult by looking time? and Si XY vs Pad/crystal Nbr
-				if (Check_Si)
-					{
+						Si_X.push_back(X) ; Si_Y.push_back(Y) ; TelescopeNumber.push_back(N) ;
 						
-						//	Si(Li)
-						for (int i = 0 ; i < Data->GetMMSiLiEMult() ; i++)
+						// Take maximum Energy
+						if(Si_X_E >= Si_Y_E) Si_E.push_back(Si_X_E)	;
+						else								 Si_E.push_back(Si_Y_E)	;
+						
+						// Take minimum Time
+						if(Si_X_T >= Si_Y_T) Si_T.push_back(Si_Y_T)	;
+						else								 Si_T.push_back(Si_X_T)	;
+						
+						for(unsigned int j = 0 ; j < EventData->GetMMSiLiEMult() ; j++)
 							{
-								if (	Data->GetMMSiLiEDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(0)
-									&&	Data->GetMMSiLiEEnergy(i) > SiLi_E_Threshold	)
+								if(EventData->GetMMSiLiEDetectorNbr(j)==N)
 									{
-										SiLi_E.push_back(Data->GetMMSiLiEEnergy(i))	;
-										SiLi_N.push_back(Data->GetMMSiLiEPadNbr(i))	;
-										
-										if ( Data->GetMMSiLiTDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(0) )
+										//	if SiLi energy is above threshold check the compatibility
+										if( fSiLi_E(EventData , j)>SiLi_E_Threshold )
 											{
-											SiLi_T.push_back(Data->GetMMSiLiTTime(i))	;
-											Check_SiLi = true ;
+												if( Match_Si_SiLi( X, Y , EventData->GetMMSiLiEPadNbr(j) ) )
+												{
+													SiLi_N.push_back(EventData->GetMMSiLiEPadNbr(j))	;
+													SiLi_E.push_back(fSiLi_E(EventData , j))	;
+													SiLi_T.push_back(fSiLi_T(EventData , j))		;
+													check_SILI = true ;
+													
+												}
 											}
-									}				
+									}
 							}
-						
-						//	CsI
-						for (int i = 0 ; i < Data->GetMMCsIEMult() ; i++)
+							
+						 for( int j = 0 ; j < EventData->GetMMCsIEMult() ; j++)
 							{
-								if (	Data->GetMMCsIEDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(0)
-									&&	Data->GetMMCsIEEnergy(i) > CsI_E_Threshold	)
+								if(EventData->GetMMCsIEDetectorNbr(j)==N)
 									{
-										CsI_E.push_back(Data->GetMMCsIEEnergy(i))		;
-										CsI_N.push_back(Data->GetMMCsIECristalNbr(i))	;
-										
-										if ( Data->GetMMCsITDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(0) )
+										//	ifCsI energy is above threshold check the compatibility
+										if( fCsI_T(EventData , j)>CsI_E_Threshold )
 											{
-											CsI_T.push_back(Data->GetMMCsITTime(i))		;
-											Check_CsI = true ;
+												if( Match_Si_CsI( X, Y , EventData->GetMMCsIECristalNbr(j) ) )
+													{
+														CsI_N.push_back(EventData->GetMMCsIECristalNbr(j))	;
+														CsI_E.push_back(fCsI_E(EventData , j))			;
+														CsI_T.push_back(fCsI_T(EventData , j))				;
+														check_CSI = true ;
+													}
 											}
 									}
 							}
-							
-					 
-					 if      (!Check_SiLi && !Check_CsI ) TotalEnergy.push_back(   			     Si_E.at(0)					);
-					 else if (Check_SiLi  && !Check_CsI ) TotalEnergy.push_back(               + Si_E.at(0) + SiLi_E.at(0)	);
-					 else if (Check_CsI   && !Check_SiLi) TotalEnergy.push_back( CsI_E .at(0)  + Si_E.at(0)					);
-					 else if (Check_CsI   &&  Check_SiLi) TotalEnergy.push_back( CsI_E .at(0)  + Si_E.at(0) + SiLi_E.at(0)	);
-					 
-					 return;
-					}
+					
+					
+						if(!check_SILI)
+							{
+								SiLi_N.push_back(0)	;
+								SiLi_E.push_back(0)	;
+								SiLi_T.push_back(0)	;
+							}
 
-				//FIXME: should built a pseudo event and then Check if particle could be identified with EDE method
-				// Dump	
+						if(!check_CSI) 
+							{
+								CsI_N.push_back(0)	;
+								CsI_E.push_back(0)	;
+								CsI_T.push_back(0)	;
+							}
+					
+					}
 			}
 		
-		//	Multiplicity 2
-		if( Data->GetMMStripXEMult()==2 && Data->GetMMStripYEMult()==2 && Data->GetMMStripXTMult()==2 && Data->GetMMStripXTMult()==2 )
+		return;
+	
+	}	
+
+///////////////////////////////////////////////////////////////////////////
+int TMust2Physics :: CheckEvent()
+	{
+		// Check the size of the different elements
+				 if(			EventData->GetMMStripXEMult() == EventData->GetMMStripYEMult() && EventData->GetMMStripYEMult() == EventData->GetMMStripXTMult() &&  EventData->GetMMStripXTMult() == EventData->GetMMStripYTMult()  )
+	
+					return 1 ; // Regular Event
+	
+		else if(			EventData->GetMMStripXEMult() == EventData->GetMMStripYEMult()+1 || EventData->GetMMStripXEMult() == EventData->GetMMStripYEMult()-1  )
+	
+					return 2 ; // Pseudo Event, potentially interstrip
+		
+		else 	return -1 ; // Rejected Event
+
+	}
+
+///////////////////////////////////////////////////////////////////////////
+bool TMust2Physics :: ResolvePseudoEvent()
+	{
+		return false;
+	}
+
+///////////////////////////////////////////////////////////////////////////
+vector < TVector2 > TMust2Physics :: Match_X_Y()
+	{
+		vector < TVector2 > ArrayOfGoodCouple ;
+		
+		for(int i = 0 ; i < EventData->GetMMStripXEMult(); i++)
 			{
-				// Different telescope case
-				if (	Data->GetMMStripXEDetectorNbr(0) != Data->GetMMStripXEDetectorNbr(1)
-					&&	Data->GetMMStripYEDetectorNbr(0) != Data->GetMMStripYEDetectorNbr(1) )
+				//	if X value is above threshold, look at Y value
+				if( fSi_X_E(EventData , i) > Si_X_E_Threshold )
 					{
 					
-						double EY, EX, TX, TY = 0;
-						// loop on both event
-						for (int jj = 0 ; jj < 2 ; jj++)
+						for(int j = 0 ; j < EventData->GetMMStripYEMult(); j++)
 							{
-								Check_Si = false ;Check_SiLi = false ;Check_CsI = false ;
-								
-							
-								TelescopeNumber.push_back( Data->GetMMStripXEDetectorNbr(jj) )	;
-								EX = Data->GetMMStripXEEnergy(jj) 				;
-								Si_X.push_back( Data->GetMMStripXEStripNbr(jj))	;
-								
-								// Get Corresponding time
-								for(int i = 0 ; i < 2 ; i++)
-									{ 
-										if(		Data->GetMMStripXTDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj) 
-											&&	Data->GetMMStripXTStripNbr(i)    == Data->GetMMStripXEStripNbr(jj)   )
-											{ TX = Data->GetMMStripXTTime(jj)	; }
-									}
-								
-								// Get Corresponding Y strip
-								for(int i = 0 ; i < 2 ; i++)
+								//	if Y value is above threshold look if detector match
+								if( fSi_Y_E(EventData , j) > Si_Y_E_Threshold )							
 									{
-										if(	Data->GetMMStripYEDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj) )
+										//	if same detector check energy
+										if ( EventData->GetMMStripXEDetectorNbr(i) == EventData->GetMMStripYEDetectorNbr(j) )
 											{
-												Si_Y.push_back( Data->GetMMStripYEStripNbr(i))	;
-												EY = Data->GetMMStripXEEnergy(i) 				;
-												TY = Data->GetMMStripXTTime(i) 					;
-												
-												/*if (EX>EY)	Si_E.push_back(EX)	;
-												else	  	Si_E.push_back(EY)	;*/ 
-												Si_E.push_back(EX);
-												
-												
-												if (TX>TY)	Si_T.push_back(TY)	;
-												else	  	Si_T.push_back(TX)	; 
-												Check_Si = true ;
+													//	Look if energy match
+													if( ( fSi_X_E(EventData , i) - fSi_Y_E(EventData , j) ) / fSi_X_E(EventData , i) < 0.1	)
+														ArrayOfGoodCouple . push_back ( TVector2(i,j) ) ;	
 											}
 									}
-							
-								if (Check_Si)
-									{ 
-										//	Si(Li)
-										for (int i = 0 ; i < Data->GetMMSiLiEMult() ; i++)
-											{ 
-												if (	Data->GetMMSiLiEDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj)
-													&&	Data->GetMMSiLiEEnergy(i) > SiLi_E_Threshold	)
-													{
-													SiLi_E.push_back(Data->GetMMSiLiEEnergy(i))	;
-													SiLi_N.push_back(Data->GetMMSiLiEPadNbr(i))	;
-													
-													if (	Data->GetMMSiLiTDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj)
-														&&	Data->GetMMSiLiTPadNbr(i)      == Data->GetMMSiLiEPadNbr(i) )
-															{
-															SiLi_T.push_back(Data->GetMMSiLiTTime(i))	;
-															Check_SiLi = true ;
-															}
-													}
-													
-												else
-													{
-													SiLi_E.push_back(-1)	;
-													SiLi_T.push_back(-1)	;
-													SiLi_N.push_back(-1)	;
-													}
-											}
-								
-										//	CsI
-										for (int i = 0 ; i < Data->GetMMCsIEMult() ; i++)
-											{
-												if (	Data->GetMMCsIEDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj)
-													&&	Data->GetMMCsIEEnergy(i) > CsI_E_Threshold	)
-													{
-													CsI_E.push_back(Data->GetMMCsIEEnergy(i))		;
-													CsI_N.push_back(Data->GetMMCsIECristalNbr(i))	;
-													if (	Data->GetMMCsITDetectorNbr(i) == Data->GetMMStripXEDetectorNbr(jj)
-														&&	Data->GetMMCsITCristalNbr(i)  == Data->GetMMCsIECristalNbr(i) )
-															{
-															CsI_T.push_back(Data->GetMMCsITTime(i))		;
-															Check_CsI = true ;
-															}
-													}
-													
-												else
-													{
-													CsI_E.push_back(-1)	;
-													CsI_T.push_back(-1)	;
-													CsI_N.push_back(-1)	;
-													}
-											}
-										
-										TotalEnergy.push_back(Si_E.at(jj)) ;
-										if (Check_SiLi) TotalEnergy.at(jj) += SiLi_E.at(jj)	;
-										if (Check_CsI)  TotalEnergy.at(jj) += CsI_E.at(jj)	;
-									}	
 							}
-						return;	
-					}
-					
-				//	Same detector case :
-				if(		Data->GetMMStripXEDetectorNbr(0) == Data->GetMMStripXEDetectorNbr(1)
-					&&	Data->GetMMStripYEDetectorNbr(0) == Data->GetMMStripYEDetectorNbr(1))
-					{
-					
-					
-					return;
 					}
 			}
-			
+	
+		if( ArrayOfGoodCouple.size() > EventData->GetMMStripXEMult() ) ArrayOfGoodCouple.clear() ;
+		
+		return ArrayOfGoodCouple;	
 	}
+	
+	
+///////////////////////////////////////////////////////////////////////////
+bool TMust2Physics :: Match_Si_SiLi(int X, int Y , int PadNbr)
+	{
+							if( 	 PadNbr == 1 
+									&& X<=121 && X>=93
+									&& Y<=128 && Y>=95 ) 
+
+						return true ;
+
+
+				else	if( 	 PadNbr == 2 
+									&& X<=121 && X>=93 
+									&& Y<=100 && Y>=65 ) 
+
+						return true ;
+
+
+				else	if( 	 PadNbr == 3 
+									&& X<=96 && X>=61 
+									&& Y<=128 && Y>=95 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 4 
+									&& X<=96 && X>=61
+									&& Y<=100 && Y>=65 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 5 
+									&& X<=67 && X>=30 
+									&& Y<=100 && Y>=65) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 6 
+									&& X<=67 && X>=30 
+									&& Y<=128 && Y>=95 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 7 
+									&& X<=35 && X>=6 
+									&& Y<=100 && Y>=65 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 8 
+									&& X<=35 && X>=6 
+									&& Y<=128 && Y>=95 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 9 
+									&& X<=121 && X>=93 
+									&& Y<=31 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 10 
+									&& X<=121 && X>=93 
+									&& Y<=60 && Y>=26 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 11 
+									&& X<=96 && X>=61
+									&& Y<=31 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 12 
+									&& X<=96 && X>=61
+									&& Y<=60 && Y>=26) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 13 
+									&& X<=67 && X>=30 
+									&& Y<=60 && Y>=26 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 14 
+									&& X<=67 && X>=30 
+									&& Y<=31 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 15 
+									&& X<=35 && X>=6
+									&& Y<=60 && Y>=26 ) 
+
+						return true ;
+
+				else	if( 	 PadNbr == 16 
+									&& X<=35 && X>=6
+									&& Y<=31 && Y>=1 ) 
+
+						return true ;		
+
+				else
+						return false;
+	}
+
+
+///////////////////////////////////////////////////////////////////////////
+bool TMust2Physics :: Match_Si_CsI(int X, int Y , int CristalNbr)
+	{
+							if( 	 CristalNbr == 1 
+									&& X<=71 && X>=27 
+									&& Y<=101 && Y>=59 ) 
+
+						return true ;
+
+
+				else	if( 	 CristalNbr == 2 
+									&& X<=71 && X>=27 
+									&& Y<=128 && Y>=90 ) 
+
+						return true ;
+
+
+				else	if( 	 CristalNbr == 3 
+									&& X<=35 && X>=1 
+									&& Y<=101 && Y>=59 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 4 
+									&& X<=35 && X>=1 
+									&& Y<=128 && Y>=90 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 5 
+									&& X<=104 && X>=60 
+									&& Y<=71 && Y>=30 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 6 
+									&& X<=104 && X>=60 
+									&& Y<=41 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 7 
+									&& X<=128 && X>=90 
+									&& Y<=71 && Y>=30 )
+
+						return true ;
+
+				else	if( 	 CristalNbr == 8 
+									&& X<=128 && X>=90 
+									&& Y<=41 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 9 
+									&& X<=71 && X>=27 
+									&& Y<=71 && Y>=40 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 10 
+									&& X<=71 && X>=27 
+									&& Y<=41 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 11 
+									&& X<=35 && X>=1 
+									&& Y<=71 && Y>=30 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 12 
+									&& X<=35 && X>=1 
+									&& Y<=41 && Y>=1 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 13 
+									&& X<=104 && X>=60 
+									&& Y<=101 && Y>=59 ) 
+
+						return true ;
+
+				else	if( 	 CristalNbr == 14 
+									&& X<=104 && X>=60 
+									&& Y<=128 && Y>=90 ) 
+
+						return true ;
 
+				else	if( 	 CristalNbr == 15 
+									&& X<=128 && X>=90 
+									&& Y<=101 && Y>=59 ) 
 
+						return true ;
+
+				else	if( 	 CristalNbr == 16 
+									&& X<=128 && X>=90 
+									&& Y<=128 && Y>=90 ) 
+
+						return true ;
+
+				else
+						return false;
+	}
+
+///////////////////////////////////////////////////////////////////////////
 void TMust2Physics::Clear()
 	{
 		EventMultiplicity= 0		;
+		
 		TelescopeNumber	.clear()	;
-		EventType		.clear()	;
-		TotalEnergy		.clear()	;
+		EventType				.clear()	;
+		TotalEnergy			.clear()	;
 		
 		// Si X
 		Si_E.clear()	;
@@ -270,4 +442,563 @@ void TMust2Physics::Clear()
 		CsI_T.clear()	;
 		CsI_N.clear()	;
 	}
+///////////////////////////////////////////////////////////////////////////
+
+////	Innherited from VDetector Class	////				
+				
+//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+void TMust2Physics::ReadConfiguration(string Path) 	
+{
+   ifstream ConfigFile           	;
+   ConfigFile.open(Path.c_str()) 	;
+   string LineBuffer          		;
+   string DataBuffer          		;	
+
+   // A:X1_Y1     --> X:1    Y:1
+   // B:X128_Y1   --> X:128  Y:1
+   // C:X1_Y128   --> X:1    Y:128
+   // D:X128_Y128 --> X:128  Y:128
+
+   double Ax , Bx , Cx , Dx , Ay , By , Cy , Dy , Az , Bz , Cz , Dz           	;
+   TVector3 A , B , C , D                                          				;
+   double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0    ;
+
+   bool check_A = false 	;
+   bool check_C = false  	;
+   bool check_B = false 	;
+   bool check_D = false  	;
+
+   bool check_Theta = false ;
+   bool check_Phi  	= false ;
+   bool check_R     = false ;
+   bool check_beta 	= false ;
+   
+   bool ReadingStatus = false ;
+	
+
+   while (!ConfigFile.eof()) 
+   	{
+      
+      	getline(ConfigFile, LineBuffer);
+
+		//	If line is a Start Up Must2 bloc, Reading toggle to true      
+      	if (LineBuffer.compare(0, 11, "M2Telescope") == 0) 
+	      	{
+	        	 cout << "///" << endl           		;
+	       		  cout << "Telescope found: " << endl   ;        
+	        	 ReadingStatus = true 					;
+	        	
+		   	}
+		
+		//	Else don't toggle to Reading Block Status
+		else ReadingStatus = false ;
+		
+		//	Reading Block
+		while(ReadingStatus)
+			{
+				 
+				ConfigFile >> DataBuffer ;
+				//	Comment Line 
+					if(DataBuffer.compare(0, 1, "%") == 0) {
+						 	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );
+							
+						}
+			
+					//	Finding another telescope (safety), toggle out
+				else if (DataBuffer.compare(0, 11, "M2Telescope") == 0) {
+						cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+						ReadingStatus = false ;
+						}
+			
+					//	Position method
+					
+		         else if (DataBuffer.compare(0, 6, "X1_Y1=") == 0) {
+		            check_A = true;
+		            ConfigFile >> DataBuffer ;
+		            Ax = atof(DataBuffer.c_str()) ;
+		            Ax = Ax  ;
+		            ConfigFile >> DataBuffer ;
+		            Ay = atof(DataBuffer.c_str()) ;
+		            Ay = Ay  ;
+		            ConfigFile >> DataBuffer ;
+		            Az = atof(DataBuffer.c_str()) ;
+		            Az = Az  ;
+
+		            A = TVector3(Ax, Ay, Az);
+		            cout << "X1 Y1 corner position : (" << A.X() << ";" << A.Y() << ";" << A.Z() << ")" << endl;
+		            
+		         }
+
+
+		         else if (DataBuffer.compare(0, 8, "X128_Y1=") == 0) {
+		            check_B = true;
+		            ConfigFile >> DataBuffer ;
+		            Bx = atof(DataBuffer.c_str()) ;
+		            Bx = Bx  ;
+		            ConfigFile >> DataBuffer ;
+		            By = atof(DataBuffer.c_str()) ;
+		            By = By  ;
+		            ConfigFile >> DataBuffer ;
+		            Bz = atof(DataBuffer.c_str()) ;
+		            Bz = Bz  ;
+
+		            B = TVector3(Bx, By, Bz);
+		            cout << "X128 Y1 corner position : (" << B.X() << ";" << B.Y() << ";" << B.Z() << ")" << endl;
+		            
+		         }
+		         
+
+		         else if (DataBuffer.compare(0, 8, "X1_Y128=") == 0) {
+		            check_C = true;
+		            ConfigFile >> DataBuffer ;
+		            Cx = atof(DataBuffer.c_str()) ;
+		            Cx = Cx  ;
+		            ConfigFile >> DataBuffer ;
+		            Cy = atof(DataBuffer.c_str()) ;
+		            Cy = Cy  ;
+		            ConfigFile >> DataBuffer ;
+		            Cz = atof(DataBuffer.c_str()) ;
+		            Cz = Cz  ;
+
+		            C = TVector3(Cx, Cy, Cz);
+		            cout << "X1 Y128 corner position : (" << C.X() << ";" << C.Y() << ";" << C.Z() << ")" << endl;
+		           
+		         }
+
+		         else if (DataBuffer.compare(0, 10, "X128_Y128=") == 0) {
+		            check_D = true;
+		            ConfigFile >> DataBuffer ;
+		            Dx = atof(DataBuffer.c_str()) ;
+		            Dx = Dx  ;
+		            ConfigFile >> DataBuffer ;
+		            Dy = atof(DataBuffer.c_str()) ;
+		            Dy = Dy  ;
+		            ConfigFile >> DataBuffer ;
+		            Dz = atof(DataBuffer.c_str()) ;
+		            Dz = Dz  ;
+
+		            D = TVector3(Dx, Dy, Dz);
+		            cout << "X128 Y128 corner position : (" << D.X() << ";" << D.Y() << ";" << D.Z() << ")" << endl;
+		           
+		         }
+			
+				//	End Position Method
+
+		         //	Angle method
+		         else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+		            check_Theta = true;
+		            ConfigFile >> DataBuffer ;
+		            Theta = atof(DataBuffer.c_str()) ;
+		            Theta = Theta ;
+		            cout << "Theta:  " << Theta << endl;
+		            
+		         }
+
+		         //Angle method
+		         else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+		            check_Phi = true;
+		            ConfigFile >> DataBuffer ;
+		            Phi = atof(DataBuffer.c_str()) ;
+		            Phi = Phi ;
+		            cout << "Phi:  " << Phi << endl;
+		          
+		         }
+
+		         //Angle method
+		         else if (DataBuffer.compare(0, 2, "R=") == 0) {
+		            check_R = true;
+		            ConfigFile >> DataBuffer ;
+		            R = atof(DataBuffer.c_str()) ;
+		            R = R ;
+		            cout << "R:  " << R << endl;
+		          
+		         }
+
+		         //Angle method
+		         else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+		            check_beta = true;
+		            ConfigFile >> DataBuffer ;
+		            beta_u = atof(DataBuffer.c_str()) ;
+		            beta_u = beta_u    ;
+		            ConfigFile >> DataBuffer ;
+		            beta_v = atof(DataBuffer.c_str()) ;
+		            beta_v = beta_v    ;
+		            ConfigFile >> DataBuffer ;
+		            beta_w = atof(DataBuffer.c_str()) ;
+		            beta_w = beta_w    ;
+		            cout << "Beta:  " << beta_u << " " << beta_v << " " << beta_w << endl  ;
+		            
+		         }
+		              
+		         /////////////////////////////////////////////////
+		         //	If All necessary information there, toggle out
+		         if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta)  ) 
+		         	{ 
+		         	ReadingStatus = false; 
+		         	
+		         	///Add The previously define telescope
+         			//With position method
+		         	if ( check_A && check_B && check_C && check_D ) 
+		         		{
+				            AddTelescope(	A   ,
+				                  				B   ,
+				                 					C   ,
+				                  				D   ) ;
+				         }
+		         	
+		         	    //with angle method
+       				  else if ( check_Theta && check_Phi && check_R && check_beta ) 
+       				  	{
+				            AddTelescope(	Theta   ,
+				                  				Phi   	,
+				                  				R       ,
+				                  				beta_u  ,
+				                  				beta_v  ,
+				                  				beta_w  );
+      					}
+								
+			        check_A = false 	;
+							check_B = false 	;
+		  				check_C = false  	;
+		  				check_D = false  	;
+
+		   				check_Theta = false   	;
+		   				check_Phi  = false  	;
+		   				check_R    = false   	;
+		   				check_beta = false  	;
+					
+		         	}
+		         
+		}
+		        
+		        
+		    
+		         	
+	}
+	
+	cout << endl << "/////////////////////////////" << endl<<endl;
+
+}
+
+//	Add Parameter to the CalibrationManger
+void TMust2Physics::AddParameterToCalibrationManager()	
+	{
+		CalibrationManager* Cal = CalibrationManager::getInstance();
+		
+		for(int i = 0 ; i < NumberOfTelescope ; i++)
+			{
+			
+				for( int j = 0 ; j < 128 ; j++)
+					{
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_Si_X"+itoa(j+1)+"_E","MUST2_T"+itoa(i+1)+"_Si_X"+itoa(j+1)+"_E")	;
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_Si_Y"+itoa(j+1)+"_E","MUST2_T"+itoa(i+1)+"_Si_Y"+itoa(j+1)+"_E")	;
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_Si_X"+itoa(j+1)+"_T","MUST2_T"+itoa(i+1)+"_Si_X"+itoa(j+1)+"_T")	;
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_Si_Y"+itoa(j+1)+"_T","MUST2_T"+itoa(i+1)+"_Si_Y"+itoa(j+1)+"_T")	;	
+					}
+		
+				for( int j = 0 ; j < 16 ; j++)
+					{
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_SiLi"+itoa(j+1)+"_E","MUST2_T"+itoa(i+1)+"_SiLi"+itoa(j+1)+"_E")	;
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_SiLi"+itoa(j+1)+"_T","MUST2_T"+itoa(i+1)+"_SiLi"+itoa(j+1)+"_T")	;
+					}
+			
+				for( int j = 0 ; j < 16 ; j++)
+					{
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_CsI"+itoa(j+1)+"_E","MUST2_T"+itoa(i+1)+"_CsI"+itoa(j+1)+"_E")		;
+						Cal->AddParameter("MUST2", "T"+itoa(i+1)+"_CsI"+itoa(j+1)+"_T","MUST2_T"+itoa(i+1)+"_CsI"+itoa(j+1)+"_T")		;
+					}
+			}
+	
+	
+	}
+
+//	Activated associated Branches and link it to the private member DetectorData address
+//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+void TMust2Physics::InitializeRootInput() 		
+	{
+		TChain* inputChain = RootInput::getInstance()->GetChain()	;
+		inputChain->SetBranchStatus( "MUST2" , true )				;
+		inputChain->SetBranchStatus( "fMM_*" , true )				;
+		inputChain->SetBranchAddress( "MUST2" , &EventData )		;
+	}
+
+
+//	Create associated branches and associated private member DetectorPhysics address
+void TMust2Physics::InitializeRootOutput() 	
+	{
+		TTree* outputTree = RootOutput::getInstance()->GetTree()		;
+		outputTree->Branch( "MUST2" , "TMust2Physics" , &EventPhysics )	;
+	}
+
+
+/////	Specific to MUST2Array	////
+
+void TMust2Physics::AddTelescope(	TVector3 C_X1_Y1 		,
+			 					TVector3 C_X128_Y1 		, 
+			 					TVector3 C_X1_Y128 		, 
+			 					TVector3 C_X128_Y128	)
+	{
+		// To avoid warning
+		C_X1_Y128 *= 1;
+
+		NumberOfTelescope++;
+	
+		//	Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
+		TVector3 U = C_X1_Y1 - C_X128_Y1 				;	
+		U = U.Unit()									;
+		//	Vector V on Telescope Face (parallele to X Strip)
+		TVector3 V = C_X128_Y128 - C_X128_Y1 				;
+		V = V.Unit()									;
+
+		//	Position Vector of Strip Center
+		TVector3 StripCenter = TVector3(0,0,0)			;
+		//	Position Vector of X=1 Y=1 Strip 
+		TVector3 Strip_1_1 								;		
+
+		//	Geometry Parameter
+		double Face = 98 					  	; //mm
+		double NumberOfStrip = 128 				; 
+		double StripPitch = Face/NumberOfStrip	; //mm
+
+		//	Buffer object to fill Position Array
+		vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
+
+		vector< vector< double > >	OneTelescopeStripPositionX	;
+		vector< vector< double > >	OneTelescopeStripPositionY	;
+		vector< vector< double > >	OneTelescopeStripPositionZ	;
+		
+		//	Moving StripCenter to 1.1 corner:
+		Strip_1_1 = C_X128_Y1 + (U+V) * (StripPitch/2.) 	;
+
+		for( int i = 0 ; i < 128 ; i++ )
+			{
+				lineX.clear()	;
+				lineY.clear()	;
+				lineZ.clear()	;
+				
+				for( int j = 0 ; j < 128 ; j++ )
+					{
+						StripCenter  = Strip_1_1 + StripPitch*( i*U + j*V  )	;
+						//StripCenter += -TargetPosition		;
+						
+						lineX.push_back( StripCenter.X() )	;
+						lineY.push_back( StripCenter.Y() )	;
+						lineZ.push_back( StripCenter.Z() )	;	
+					}
+					
+				OneTelescopeStripPositionX.push_back(lineX)	;
+				OneTelescopeStripPositionY.push_back(lineY)	;
+				OneTelescopeStripPositionZ.push_back(lineZ)	;
+			 	
+			}
+	
+		
+		StripPositionX.push_back( OneTelescopeStripPositionX ) ;
+		StripPositionY.push_back( OneTelescopeStripPositionY ) ;
+		StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;	
+
+	}
+				
+				
+void TMust2Physics::AddTelescope(	double theta 	, 
+								double phi 		, 
+								double distance , 
+								double beta_u 	, 
+								double beta_v 	, 
+								double beta_w	)
+	{
+	
+		NumberOfTelescope++;
+	
+		double Pi = 3.141592654 ;
+
+		// convert from degree to radian:
+		theta = theta * Pi/180. ; 
+		phi   = phi   * Pi/180. ;
+
+		//Vector U on Telescope Face (paralelle to Y Strip) (NB: remember that Y strip are allong X axis)
+		TVector3 U ;	
+		//Vector V on Telescope Face (parallele to X Strip)
+		TVector3 V ;
+		//Vector W normal to Telescope Face (pointing CsI)
+		TVector3 W ;
+		//Vector position of Telescope Face center
+		TVector3 C ;
+			
+		C = TVector3 (	distance * sin(theta) * cos(phi) ,
+						distance * sin(theta) * sin(phi) ,
+						distance * cos(theta)			 );
+		
+    	TVector3 P = TVector3(	cos(theta ) * cos(phi)	, 
+    							cos(theta ) * sin(phi)	,
+    							-sin(theta)				);
+		
+		W = C.Unit() ;
+		U = W .Cross ( P ) ;
+	    V = W .Cross ( U );
+		
+		U = U.Unit();
+		V = V.Unit();
+		
+		U.Rotate( beta_u * Pi/180. , U ) ;
+		V.Rotate( beta_u * Pi/180. , U ) ;
+		
+		U.Rotate( beta_v * Pi/180. , V ) ;
+		V.Rotate( beta_v * Pi/180. , V ) ;
+		
+		U.Rotate( beta_w * Pi/180. , W ) ;
+		V.Rotate( beta_w * Pi/180. , W ) ;
+		
+		double Face = 98 					  	; //mm
+		double NumberOfStrip = 128 				;
+		double StripPitch = Face/NumberOfStrip	; //mm
+
+		vector<double> lineX ; vector<double> lineY ; vector<double> lineZ ;
+		
+		vector< vector< double > >	OneTelescopeStripPositionX	;
+		vector< vector< double > >	OneTelescopeStripPositionY	;
+		vector< vector< double > >	OneTelescopeStripPositionZ	;
+		
+		double X , Y , Z  ;
+
+		//Moving C to the 1.1 corner:
+		C.SetX( C.X() - ( Face/2 - StripPitch/2 ) * ( V.X() + U.X() ) )  ; 
+		C.SetY( C.Y() - ( Face/2 - StripPitch/2 ) * ( V.Y() + U.Y() ) )  ; 
+		C.SetZ( C.Z() - ( Face/2 - StripPitch/2 ) * ( V.Z() + U.Z() ) )  ; 
+	
+		for( int i = 0 ; i < 128 ; i++ )
+			{
+				
+				lineX.clear()	;
+				lineY.clear()	;
+				lineZ.clear()	;
+				
+				for( int j = 0 ; j < 128 ; j++ )
+					{
+						X = C.X() + StripPitch * ( U.X()*i + V.X()*j )	;
+						Y = C.Y() + StripPitch * ( U.Y()*i + V.Y()*j )	;
+						Z = C.Z() + StripPitch * ( U.Z()*i + V.Z()*j )	;
+									
+						lineX.push_back(X)	;
+						lineY.push_back(Y)	;
+						lineZ.push_back(Z)	;		
+						
+					}
+				
+				OneTelescopeStripPositionX.push_back(lineX)	;
+				OneTelescopeStripPositionY.push_back(lineY)	;
+				OneTelescopeStripPositionZ.push_back(lineZ)	;
+			 	
+			}
+		StripPositionX.push_back( OneTelescopeStripPositionX ) ;
+		StripPositionY.push_back( OneTelescopeStripPositionY ) ;
+		StripPositionZ.push_back( OneTelescopeStripPositionZ ) ;
+	}
+	
+	
+TVector3 TMust2Physics::GetPositionOfInteraction(int i)
+	{
+		TVector3 Position = TVector3 (	GetStripPositionX( TelescopeNumber[i] , Si_X[i] , Si_Y[i] ) 	,
+																		GetStripPositionY( TelescopeNumber[i] , Si_X[i] , Si_Y[i] )		,
+																		GetStripPositionZ( TelescopeNumber[i] , Si_X[i] , Si_Y[i] )		) ;
+		
+		return(Position) ;	
+	
+	}
+	
+TVector3 TMust2Physics::GetTelescopeNormal( int i)
+	{
+				TVector3 U = 	TVector3 (	GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) 	,
+																	GetStripPositionY( TelescopeNumber[i] , 128 , 1 )		,
+																	GetStripPositionZ( TelescopeNumber[i] , 128 , 1 )		)
+											
+									- 	TVector3 (	GetStripPositionX( TelescopeNumber[i] , 1 , 1 ) 		,
+																	GetStripPositionY( TelescopeNumber[i] , 1 , 1 )			,
+																	GetStripPositionZ( TelescopeNumber[i] , 1 , 1 )			);
+										
+				TVector3 V = 	TVector3 (	GetStripPositionX( TelescopeNumber[i] , 128 , 128 ) ,
+																	GetStripPositionY( TelescopeNumber[i] , 128 , 128 )	,
+																	GetStripPositionZ( TelescopeNumber[i] , 128 , 128 )	)
+											
+										-	TVector3 (	GetStripPositionX( TelescopeNumber[i] , 128 , 1 ) 	,
+																	GetStripPositionY( TelescopeNumber[i] , 128 , 1 )		,
+																	GetStripPositionZ( TelescopeNumber[i] , 128 , 1 )		);
+											
+				TVector3 Normal = U.Cross(V);
+		
+		return(Normal.Unit()) ;	
+	
+	}	
+
+///////////////////////////////////////////////////////////////////////////
+namespace LOCAL
+	{
+		
+		//	tranform an integer to a string
+		string itoa(int value)
+			{
+			  std::ostringstream o;
+			
+			  if (!(o << value))
+			    return ""	;
+			    
+			  return o.str();
+			}
+			
+		//	DSSD
+		//	X
+		double fSi_X_E(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/" + itoa( EventData->GetMMStripXEDetectorNbr(i) ) + "Si_X" + itoa( EventData->GetMMStripXEStripNbr(i) ) + "_E",	
+																																		EventData->GetMMStripXEEnergy(i) );
+																																	
+			}
+			
+		double fSi_X_T(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMStripXTDetectorNbr(i) ) + "Si_X" + itoa( EventData->GetMMStripXTStripNbr(i) ) +"_T",	
+																																		EventData->GetMMStripXTTime(i) );
+			}
+		
+		//	Y	
+		double fSi_Y_E(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMStripYEDetectorNbr(i) ) + "Si_Y" + itoa( EventData->GetMMStripYEStripNbr(i) ) +"_E",	
+																																		EventData->GetMMStripYEEnergy(i) );
+			}
+			
+		double fSi_Y_T(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMStripYTDetectorNbr(i) ) + "Si_Y" + itoa( EventData->GetMMStripYTStripNbr(i) ) +"_T",	
+																																		EventData->GetMMStripYTTime(i) );
+			}
+			
+			
+		//	SiLi
+		double fSiLi_E(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMSiLiEDetectorNbr(i) ) + "SiLi" + itoa( EventData->GetMMSiLiEPadNbr(i) ) +"_E",	
+																																		EventData->GetMMSiLiEEnergy(i) );
+			}
+			
+		double fSiLi_T(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMSiLiTDetectorNbr(i) ) + "SiLi" + itoa( EventData->GetMMSiLiTPadNbr(i) )+"_T",	
+																																		EventData->GetMMSiLiTTime(i) );
+			}
+			
+		//	CsI
+		double fCsI_E(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMCsIEDetectorNbr(i) ) + "SiLi" + itoa( EventData->GetMMCsIECristalNbr(i) ) +"_E",	
+																																		EventData->GetMMCsIEEnergy(i) );
+			}
+			
+		double fCsI_T(TMust2Data* EventData , int i)
+			{
+				return CalibrationManager::getInstance()->ApplyCalibration(	"MUST2/T" + itoa( EventData->GetMMCsITDetectorNbr(i) ) + "SiLi" + itoa( EventData->GetMMCsITCristalNbr(i) ) +"_T",	
+																																		EventData->GetMMCsITTime(i) );
+			}
+	
+	}
 
diff --git a/NPLib/MUST2/TMust2Physics.h b/NPLib/MUST2/TMust2Physics.h
index 04fabcd78110e9998ec2810a00f1dba7ceb06bdf..1f649c60c2ae4298b4a44380e7fdb5bf7a9d903e 100644
--- a/NPLib/MUST2/TMust2Physics.h
+++ b/NPLib/MUST2/TMust2Physics.h
@@ -22,24 +22,39 @@
  *  Improvment needed                                                        *
  *                                                                           *
  *****************************************************************************/
+// STL
 #include <vector>
-#include "TObject.h"
+
+// NPL
 #include "TMust2Data.h"
+#include "../include/CalibrationManager.h"
+#include "../include/VDetector.h"
+// ROOT 
+#include "TVector2.h" 
+#include "TVector3.h" 
+#include "TObject.h"
 
 using namespace std ;
 
-class TMust2Physics : public TObject
+class TMust2Physics : public TObject, public NPA::VDetector
 {
 	public:
 		TMust2Physics()	;
-		~TMust2Physics();
+		~TMust2Physics() {};
 
 	public: 
 	void Clear()									;	
-	void BuildPhysicalEvent(TMust2Data* Data)		;
-	void BuildSimplePhysicalEvent(TMust2Data* Data)	;
-		
+  void Clear(const Option_t*) {};
+
+	public: 
+	vector < TVector2 > Match_X_Y() ;
+	bool Match_Si_CsI(int X, int Y , int CristalNbr);
+	bool Match_Si_SiLi(int X, int Y , int PadNbr);
+	bool ResolvePseudoEvent();
+	int  CheckEvent();
+	
 	public:
+	
 	//	Provide Physical Multiplicity
 	Int_t			EventMultiplicity	;
 				
@@ -52,23 +67,129 @@ class TMust2Physics : public TObject
 	//	Si X
 	vector<double>	Si_E				;
 	vector<double>	Si_T				;
-	vector<int>		Si_X				;
-	vector<int>		Si_Y				;
+	vector<int>			Si_X				;
+	vector<int>			Si_Y				;
 	
 	//	Si(Li)
 	vector<double>	SiLi_E				;
 	vector<double>	SiLi_T				;
-	vector<int>		SiLi_N				;
+	vector<int>			SiLi_N				;
 	
 	//	CsI
 	vector<double>	CsI_E				;
 	vector<double>	CsI_T				;
-	vector<int>		CsI_N				;	
+	vector<int>			CsI_N				;	
 	
 	// Physical Value  
 	vector<double>	TotalEnergy			;
 	
-	ClassDef(TMust2Physics,1)  // Must2Data structure
+	
+	public:		//	Innherited from VDetector Class
+			
+		//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+		void ReadConfiguration(string) 				;
+		
+
+		//	Add Parameter to the CalibrationManger
+		void AddParameterToCalibrationManager()	;		
+			
+		
+		//	Activated associated Branches and link it to the private member DetectorData address
+		//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+		void InitializeRootInput() 					;
+
+
+		//	Create associated branches and associated private member DetectorPhysics address
+		void InitializeRootOutput() 		 		;
+		
+		
+		//	This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+		void BuildPhysicalEvent()					;
+		
+		
+		//	Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+		//	This method aimed to be used for analysis performed during experiment, when speed is requiered.
+		//	NB: This method can eventually be the same as BuildPhysicalEvent.
+		void BuildSimplePhysicalEvent()				;
+
+		//	Those two method all to clear the Event Physics or Data
+		void ClearEventPhysics()		{Clear();}		
+		void ClearEventData()				{EventData->Clear();}		
+	
+	public:		//	Specific to MUST2 Array
+		//	Add a Telescope using Corner Coordinate information
+		void AddTelescope(	TVector3 C_X1_Y1 		,
+	 						TVector3 C_X128_Y1 		, 
+	 						TVector3 C_X1_Y128 		, 
+	 						TVector3 C_X128_Y128	);
+		
+		//	Add a Telescope using R Theta Phi of Si center information
+		void AddTelescope(	double theta 	, 
+							double phi 		, 
+							double distance , 
+							double beta_u 	, 
+							double beta_v 	, 
+							double beta_w	);
+							
+		double GetStripPositionX( int N , int X , int Y )	{ return StripPositionX[N-1][X-1][Y-1] ; };
+		double GetStripPositionY( int N , int X , int Y )	{ return StripPositionY[N-1][X-1][Y-1] ; };
+		double GetStripPositionZ( int N , int X , int Y )	{ return StripPositionZ[N-1][X-1][Y-1] ; };
+
+		double GetNumberOfTelescope() 	{ return NumberOfTelescope ; }			;
+
+		// To be called after a build Physical Event 
+		int GetEventMultiplicity()	{ return EventMultiplicity; };
+		
+		double GetEnergyDeposit(int i) { return TotalEnergy[i] ;};
+		
+		TVector3 GetPositionOfInteraction(int i)	 ;	
+		TVector3 GetTelescopeNormal(int i)		;
+
+	 	private:	//	Root Input and Output tree classes
+				
+				TMust2Data* 	  	EventData				;//!
+				TMust2Physics* 	  EventPhysics		;//!
+
+
+		private:	//	Spatial Position of Strip Calculated on bases of detector position
+	
+			int NumberOfTelescope	;//!
+		
+			vector< vector < vector < double > > >	StripPositionX			;//!
+			vector< vector < vector < double > > >	StripPositionY			;//!
+			vector< vector < vector < double > > >	StripPositionZ			;//!
+			
+	ClassDef(TMust2Physics,1)  // Must2Physics structure
 };
 
+namespace LOCAL
+	{
+		// Threshold
+		const double Si_X_E_Threshold = 0	;	const double Si_X_T_Threshold = 0 ;
+		const double Si_Y_E_Threshold = 0	;	const double Si_Y_T_Threshold = 0	;
+		const double SiLi_E_Threshold = 0	;	const double SiLi_T_Threshold = 0	;
+		const double CsI_E_Threshold	= 0 ;	const double CsI_T_Threshold	= 0	;
+		
+		//	tranform an integer to a string
+		string itoa(int value);
+		//	DSSD
+		//	X
+		double fSi_X_E(TMust2Data* Data , int i);
+		double fSi_X_T(TMust2Data* Data, int i);
+		
+		//	Y	
+		double fSi_Y_E(TMust2Data* Data, int i);
+		double fSi_Y_T(TMust2Data* Data, int i);
+			
+		//	SiLi
+		double fSiLi_E(TMust2Data* Data, int i);
+		double fSiLi_T(TMust2Data* Data, int i);
+			
+		//	CsI
+		double fCsI_E(TMust2Data* Data, int i);
+		double fCsI_T(TMust2Data* Data, int i);
+	
+	}
+
+
 #endif
diff --git a/NPLib/Makefile b/NPLib/Makefile
index bdfaaf6e1e7a68e22d56a00385b0a2753ce40bb8..b9158c7b7aac4171648a27652076a40eefd30898 100644
--- a/NPLib/Makefile
+++ b/NPLib/Makefile
@@ -268,19 +268,30 @@ GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
 INCLUDE		= -I$(CLHEP_BASE_DIR)/include
  
 #------------------------------------------------------------------------------
-SHARELIB      =	Vdetec	InputOutputRoot InitCond	InterCoord \
-		Must2All	GaspardData	AnnularS1Data PlasticData\
+SHARELIB      =	CalibManager Vdetec InputOutputRoot InitCond	InterCoord \
+		Must2All	GaspardData	AnnularS1Data PlasticData DummyDetectorData SSSDData\
 		Reaction	EnergyLoss
 
 all:         $(SHARELIB)
 	rm -f ./include/*Dict.h
 #------------------------------------------------------------------------------
+############### Calibration ##############
+
+## CalibrationManager ##
+CalibManager:
+		make -C ./CalibrationManager
+		cp ./CalibrationManager/*.so ./lib ; cp ./CalibrationManager/*.h ./include
+ifeq ($(ARCH),macosx)
+		cd lib; ln -sf libCalibrationManager.so libCalibrationManager.dylib
+endif
+
 ############### Detector ##############
 
 ## VDetector ##
 Vdetec:
+		cp ./VDetector/*.h ./include
 		make -C ./VDetector
-		cp ./VDetector/*.so ./lib ; cp ./VDetector/*.h ./include
+		cp ./VDetector/*.so ./lib
 ifeq ($(ARCH),macosx)
 		cd lib; ln -sf libVDetector.so libVDetector.dylib
 endif
@@ -294,6 +305,15 @@ ifeq ($(ARCH),macosx)
 		cd lib; ln -sf libMust2Physics.so libMust2Physics.dylib
 endif
 
+## SSSD ##
+SSSDData:
+		make -C ./SSSD
+		cp ./SSSD/*.so ./lib ; cp ./SSSD/*.h ./include
+ifeq ($(ARCH),macosx)
+		cd lib; ln -sf libSSSDData.so libSSSDData.dylib
+		cd lib; ln -sf libSSSDPhysics.so libSSSDPhysics.dylib
+endif
+
 ## AnnularS1 ##
 AnnularS1Data:
 		make -C ./AnnularS1
@@ -308,19 +328,25 @@ GaspardData:
 		cp ./GASPARD/*.so ./lib ; cp ./GASPARD/*.h ./include
 ifeq ($(ARCH),macosx)
 		cd lib; ln -sf libGaspardData.so libGaspardData.dylib
-		cd lib; ln -sf libGaspardPyysics.so libGaspardPhysics.dylib
+		cd lib; ln -sf libGaspardPhysics.so libGaspardPhysics.dylib
 endif
 
-## Gaspard ##
+## Plastic ##
 PlasticData:
 		make -C ./Plastic
 		cp ./Plastic/*.so ./lib ; cp ./Plastic/*.h ./include
 ifeq ($(ARCH),macosx)
 		cd lib; ln -sf libPlasticData.so libPlasticData.dylib
-		cd lib; ln -sf libPlasticPyysics.so libPlasticPhysics.dylib
+		cd lib; ln -sf libPlasticPhysics.so libPlasticPhysics.dylib
 endif
 
-
+## DUMMY Detector ##
+DummyDetectorData:
+		make -C ./DummyDetector
+		cp ./DummyDetector/*.so ./lib ; cp ./DummyDetector/*.h ./include
+ifeq ($(ARCH),macosx)
+		cd lib; ln -sf libDummyDetectorData.so libDummyDetectorData.dylib
+endif
 ############# Simulation ##############
 
 ## InitialConditions ##
@@ -373,11 +399,14 @@ clean:
 	make clean -C ./Tools
 	make clean -C ./IORoot
 	make clean -C ./VDetector
+	make clean -C ./CalibrationManager
 	make clean -C ./MUST2
+	make clean -C ./SSSD
 	make clean -C ./AnnularS1
 	make clean -C ./GASPARD
 	make clean -C ./InteractionCoordinates
 	make clean -C ./InitialConditions
+	make clean -C ./DummyDetector
 	
 distclean:
 	rm -f ./lib/*.so
@@ -388,12 +417,14 @@ endif
 	make distclean -C ./Tools
 	make distclean -C ./IORoot
 	make distclean -C ./VDetector
+	make distclean -C ./CalibrationManager
 	make distclean -C ./MUST2
+	make distclean -C ./SSSD
 	make distclean -C ./AnnularS1
 	make distclean -C ./GASPARD
 	make distclean -C ./InteractionCoordinates
 	make distclean -C ./InitialConditions
-
+	make distclean -C ./DummyDetector
 .SUFFIXES: .$(SrcSuf)
 
 ###
diff --git a/NPLib/Plastic/Makefile b/NPLib/Plastic/Makefile
index e5373baed1a56beac4a2ecd424d8ed5a91a45d6d..06fc2ee6055f821118bbba183e20029e06d11969 100644
--- a/NPLib/Plastic/Makefile
+++ b/NPLib/Plastic/Makefile
@@ -268,7 +268,7 @@ GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
 INCLUDE		= -I$(CLHEP_BASE_DIR)/include
  
 #------------------------------------------------------------------------------
-SHARELIB      =  libPlasticData.so 
+SHARELIB      =  libPlasticData.so libPlasticPhysics.so
 
 all:            $(SHARELIB)
 #------------------------------------------------------------------------------
@@ -281,8 +281,15 @@ libPlasticData.so:	TPlasticData.o	TPlasticDataDict.o
 TPlasticDataDict.cxx:	TPlasticData.h
 			rootcint -f $@ -c $^
 
+libPlasticPhysics.so:	TPlasticPhysics.o	TPlasticPhysicsDict.o
+			$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TPlasticPhysicsDict.cxx:	TPlasticPhysics.h
+			rootcint -f $@ -c $^
+
 # dependances
 TPlasticData.o:	TPlasticData.cxx	TPlasticData.h
+TPlasticPhysics.o:	TPlasticPhysics.cxx	TPlasticPhysics.h
 #######################################
 
 ############# Clean and More ##########
diff --git a/NPLib/Plastic/TPlasticData.cxx b/NPLib/Plastic/TPlasticData.cxx
index 1221a2a4f6b5abed0ceb5f94d74fe56c3e8586b5..f7d677090215f65d3d7c578849f53d9ee9b5703d 100644
--- a/NPLib/Plastic/TPlasticData.cxx
+++ b/NPLib/Plastic/TPlasticData.cxx
@@ -1,6 +1,4 @@
 #include <iostream>
-using namespace std;
-
 #include "TPlasticData.h"
 
 
@@ -22,15 +20,16 @@ void TPlasticData::Clear()
 {
     fPlastic_Energy.clear();
     fPlastic_Number.clear();
+    fPlastic_Time.clear();
 }
 
 
 
-void TPlasticData::Dump()
+void TPlasticData::Dump() const
 {
    cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
 
-	for(short i = 0 ; i<fPlastic_Energy.size() ; i ++)
+	for(unsigned short i = 0 ; i<fPlastic_Energy.size() ; i ++)
 		{
 			cout << "Plastic Number " << fPlastic_Number[i] << " Energy: " << fPlastic_Energy[i]  << " Time: "<< fPlastic_Time[i] << endl;
 		
diff --git a/NPLib/Plastic/TPlasticData.h b/NPLib/Plastic/TPlasticData.h
index f11a97f572312123f19724077a334d1067f985ea..ebd2eb3f79c1ca83b7710a75c8f26ac949d7bb1e 100644
--- a/NPLib/Plastic/TPlasticData.h
+++ b/NPLib/Plastic/TPlasticData.h
@@ -4,7 +4,7 @@
 #include <vector>
 
 #include "TObject.h"
-
+using namespace std ;
 
 
 class TPlasticData : public TObject {
@@ -12,27 +12,37 @@ class TPlasticData : public TObject {
    // ADC
    vector<double>	  fPlastic_Energy	;	
    vector<double>	  fPlastic_Time		;
-   vector<short>      fPlastic_Number	;
+   vector<short>    fPlastic_Number	;
    
  public:
    TPlasticData();
    virtual ~TPlasticData();
 
    void	Clear();
-   void	Dump();
+   void	Clear(const Option_t*) {};
+   void	Dump() const;
 
    /////////////////////           GETTERS           ////////////////////////
    // (E)
-   double	GetEnergy(int i)			{return fPlastic_Energy[i];}
+   double	GetEnergy(int i)					{	return fPlastic_Energy[i]			;}
    // (T)
-   double	GetTime(int i)				{return fPlastic_Time[i];}
+   double	GetTime(int i)						{	return fPlastic_Time[i]				;}
    // (N)
-   int      GetPlasticNumber(int i)		{return fPlastic_Number[i];}
+   int    GetPlasticNumber(int i)		{	return fPlastic_Number[i]			;}
+   
+   //Mult
+   // E
+   double	GetEnergyMult()						{	return fPlastic_Energy.size()	;}
+   // (T)
+   double	GetTimeMult()							{	return fPlastic_Time.size()		;}
+   // (N)
+   int    GetPlasticNumberMult()		{	return fPlastic_Number.size()	;}
+   
    /////////////////////           SETTERS           ////////////////////////
    // (E)
-   void	SetEnergy(double E)			{fPlastic_Energy.push_back(E);}
-   void	SetTime(double T)			{fPlastic_Time.push_back(T);}
-   void	SetPlasticNumber(int N)		{fPlastic_Number.push_back(N);}
+   void	SetEnergy(double E)					{	fPlastic_Energy.push_back(E)	;}
+   void	SetTime(double T)						{	fPlastic_Time.push_back(T)		;}
+   void	SetPlasticNumber(int N)			{	fPlastic_Number.push_back(N)	;}
    
    //
    ClassDef(TPlasticData,1)  // PlasticData structure
diff --git a/NPLib/Plastic/TPlasticPhysics.cxx b/NPLib/Plastic/TPlasticPhysics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..093f1ee58f6e74d8d2d0b1353c2b662821bfcbe0
--- /dev/null
+++ b/NPLib/Plastic/TPlasticPhysics.cxx
@@ -0,0 +1,255 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : november 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold Plastic  Physics                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+
+//	NPL
+#include "TPlasticPhysics.h"
+#include "../include/RootOutput.h"
+#include "../include/RootInput.h"
+
+//	STL
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <limits>
+#include <stdlib.h>
+using namespace std;
+
+//	ROOT
+#include "TChain.h"
+
+//	tranform an integer to a string
+		string itoa(int value)
+			{
+			  std::ostringstream o;
+			
+			  if (!(o << value))
+			    return ""	;
+			    
+			  return o.str();
+			}
+
+ClassImp(TPlasticPhysics)
+///////////////////////////////////////////////////////////////////////////
+TPlasticPhysics::TPlasticPhysics()
+	{		
+		NumberOfDetector = 0 					;
+		EventData = new TPlasticData	;
+		EventPhysics = this						;
+	}
+	
+///////////////////////////////////////////////////////////////////////////
+TPlasticPhysics::~TPlasticPhysics()
+	{}
+	
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::Clear()
+	{
+		DetectorNumber	.clear()	;
+		Energy					.clear()	;
+		Time						.clear()	;
+	}
+	
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::ReadConfiguration(string Path) 
+	{
+		ifstream ConfigFile           ;
+		ConfigFile.open(Path.c_str()) ;
+		string LineBuffer          ;
+		string DataBuffer          ;
+
+		double Theta = 0 , Phi = 0 , R = 0 , Thickness = 0 , Radius = 0 , LeadThickness = 0;
+		string Scintillator ;
+
+		bool check_Theta = false   ;
+		bool check_Phi  = false  ;
+		bool check_R     = false   ;
+		bool check_Thickness = false  		;
+		bool check_Radius = false  			;
+		bool check_LeadThickness = false		;
+		bool check_Scintillator = false		;
+		bool ReadingStatus = false ;
+		
+
+	 while (!ConfigFile.eof()) 
+	 	{
+	      
+		      	getline(ConfigFile, LineBuffer);
+
+				//	If line is a Start Up Plastic bloc, Reading toggle to true      
+		      	if (LineBuffer.compare(0, 7, "Plastic") == 0) 
+			      	{
+			        	 cout << "///" << endl           ;
+			       		  cout << "Platic found: " << endl   ;        
+			        	 ReadingStatus = true ;
+			        	
+				   	}
+				
+				//	Else don't toggle to Reading Block Status
+				else ReadingStatus = false ;
+				
+				//	Reading Block
+				while(ReadingStatus)
+					{
+							// Pickup Next Word 
+						ConfigFile >> DataBuffer ;
+
+						//	Comment Line 
+						if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+							//	Finding another telescope (safety), toggle out
+						else if (DataBuffer.compare(0, 6, "Plastic") == 0) {
+							cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+							ReadingStatus = false ;
+						}
+											
+						//Angle method
+						else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+							check_Theta = true;
+							ConfigFile >> DataBuffer ;
+							Theta = atof(DataBuffer.c_str()) ;
+						}
+
+						else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+							check_Phi = true;
+							ConfigFile >> DataBuffer ;
+							Phi = atof(DataBuffer.c_str()) ;
+						}
+
+						else if (DataBuffer.compare(0, 2, "R=") == 0) {
+							check_R = true;
+							ConfigFile >> DataBuffer ;
+							R = atof(DataBuffer.c_str()) ;
+						}
+						
+						else if (DataBuffer.compare(0, 7, "Radius=") == 0) {
+							check_Radius = true;
+							ConfigFile >> DataBuffer ;
+							Radius = atof(DataBuffer.c_str()) ;
+						}
+						
+						else if (DataBuffer.compare(0, 10, "Thickness=") == 0) {
+							check_Thickness = true;
+							ConfigFile >> DataBuffer ;
+							Thickness = atof(DataBuffer.c_str()) ;
+						}
+						
+						else if (DataBuffer.compare(0, 13, "Scintillator=") == 0) {
+							check_Scintillator = true ;
+							ConfigFile >> DataBuffer ;
+							Scintillator = DataBuffer ;
+						}
+						
+						else if (DataBuffer.compare(0, 14, "LeadThickness=") == 0) {
+							check_LeadThickness = true;
+							ConfigFile >> DataBuffer ;
+							LeadThickness = atof(DataBuffer.c_str()) ;
+						}
+				      
+				         	///////////////////////////////////////////////////
+							//	If no Detector Token and no comment, toggle out
+				         else 
+				         	{ReadingStatus = false; cout << "Wrong Token Sequence: Getting out " << DataBuffer << endl ;}
+				         
+				         	/////////////////////////////////////////////////
+				         	//	If All necessary information there, toggle out
+				         
+				         if ( check_Theta && check_Phi && check_R && check_Thickness && check_Radius && check_LeadThickness && check_Scintillator) 
+				         	{ 
+			         		  NumberOfDetector++;
+						         
+						        //	Reinitialisation of Check Boolean 
+						        
+								check_Theta = false   			;
+								check_Phi  = false  			;
+								check_R     = false   			;
+								check_Thickness = false  		;
+								check_Radius = false  			;
+								check_LeadThickness = false		;
+								check_Scintillator = false 		;
+								ReadingStatus = false 			;	
+								cout << "///"<< endl ;	         
+				         	}
+				         	
+					}
+		}
+	}
+
+
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::AddParameterToCalibrationManager()
+	{
+		CalibrationManager* Cal = CalibrationManager::getInstance();
+		
+		for(int i = 0 ; i < NumberOfDetector ; i++)
+			{
+				for( int j = 0 ; j < 16 ; j++)
+					{
+						Cal->AddParameter("Plastic", "Detector"+itoa(i+1)+"_E","Plastic_Detector"+itoa(i+1)+"_E")	;
+						Cal->AddParameter("Plastic", "Detector"+itoa(i+1)+"_T","Plastic_Detector"+itoa(i+1)+"_T")	;	
+					}
+		
+			}
+	}
+	
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::InitializeRootInput()
+	{
+		TChain* inputChain = RootInput::getInstance()->GetChain()			;
+		inputChain->SetBranchStatus ( "Plastic" 		, true )					;
+		inputChain->SetBranchStatus ( "fPlastic_*" 	, true )					;
+		inputChain->SetBranchAddress( "Plastic" 		, &EventData )		;
+	}	
+
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::InitializeRootOutput()
+	{
+		TTree* outputTree = RootOutput::getInstance()->GetTree()						;
+		outputTree->Branch( "Plastic" , "TPlasticPhysics" , &EventPhysics )	;
+	}
+
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::BuildPhysicalEvent()
+	{
+		BuildSimplePhysicalEvent()	;
+	}
+
+///////////////////////////////////////////////////////////////////////////
+void TPlasticPhysics::BuildSimplePhysicalEvent()
+	{
+				for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; i++)
+					{
+					
+						DetectorNumber	.push_back( EventData->GetPlasticNumber(i) )	;
+						
+						Energy					.push_back(
+							CalibrationManager::getInstance()->ApplyCalibration(	"Plastic/Detector" + itoa( EventData->GetPlasticNumber(i) ) +"_E",	
+																																		EventData->GetEnergy(i) )
+																			)	;
+																			
+						Time						.push_back(
+							CalibrationManager::getInstance()->ApplyCalibration(	"Plastic/Detector" + itoa( EventData->GetPlasticNumber(i) ) +"_T",	
+																																		EventData->GetTime(i) )
+																			)	;
+					}
+
+	}
+
diff --git a/NPLib/Plastic/TPlasticPhysics.h b/NPLib/Plastic/TPlasticPhysics.h
new file mode 100644
index 0000000000000000000000000000000000000000..a00c34437ad3ac4caa7aee9195a241ec42fd6fdf
--- /dev/null
+++ b/NPLib/Plastic/TPlasticPhysics.h
@@ -0,0 +1,91 @@
+#ifndef __PlasticPhysics__
+#define __PlasticPhysics__
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : November 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold thePlastic Detector  Physics                             *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+ 
+//	STL
+#include <vector>
+using namespace std ;
+
+//	ROOT
+#include "TObject.h"
+
+//	NPL
+#include "TPlasticData.h"
+#include "../include/VDetector.h"
+#include "../include/CalibrationManager.h"
+
+class TPlasticPhysics : public TObject, public NPA::VDetector
+{
+	public:	//	Constructor and Destructor
+		TPlasticPhysics();
+		~TPlasticPhysics();
+
+	public:	//	Calibrated Data
+
+		vector<UShort_t>	DetectorNumber	;
+		vector<Double_t>	Energy					;
+		vector<Double_t>	Time						;
+
+	public:	//	inherrited from VDetector
+		//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+		void ReadConfiguration(string) 				;
+		
+
+		//	Add Parameter to the CalibrationManger
+		void AddParameterToCalibrationManager()	;		
+			
+		
+		//	Activated associated Branches and link it to the private member DetectorData address
+		//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+		void InitializeRootInput() 					;
+
+
+		//	Create associated branches and associated private member DetectorPhysics address
+		void InitializeRootOutput() 		 		;
+		
+		
+		//	This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+		void BuildPhysicalEvent()					;
+		
+		
+		//	Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+		//	This method aimed to be used for analysis performed during experiment, when speed is requiered.
+		//	NB: This method can eventually be the same as BuildPhysicalEvent.
+		void BuildSimplePhysicalEvent()				;
+
+		//	Those two method all to clear the Event Physics or Data
+		void ClearEventPhysics()		{Clear();}		
+		void ClearEventData()				{EventData->Clear();}		
+
+	private:	// Data not writted in the tree
+				int									NumberOfDetector	;//!
+				TPlasticData* 	  	EventData					;//!
+				TPlasticPhysics* 	  EventPhysics			;//!
+
+		void	Clear();
+    void  Clear(const Option_t*) {};
+	
+		ClassDef(TPlasticPhysics,1)  // PlasticPhysics structure
+};
+
+#endif
diff --git a/NPLib/README b/NPLib/README
index c6deacdc58f4a59e6e60fd6bea2db76edb401eb5..5723d77390845d9aa5512a46bb0bdda223619ffb 100644
--- a/NPLib/README
+++ b/NPLib/README
@@ -27,6 +27,8 @@ NPLib / include
       / Tools
       / InitialConditions
       / InteractionCoordinates
+      / CalibrationManager
+      / DummyDetector
       / MUST2
       / AnnularS1
       / GASPARD
@@ -67,9 +69,32 @@ VI) InteractionCoordinates
 	This class derives from TObject (ROOT) and its aim is to be stored in the 
 	output TTree of the G4 simulation.
 
-VII) MUST2
+VII) CalibrationManager
+	This directory includes one library:
+	libCalibrationManager.so
+		This folder contain the the class object for managing calibration file.
+	A caliration manager singleton is instantiate in NPAnalysis project.
+	 
+VIII) DummyDetector
+	This directory includes one library:
+		libDUMMYDetector.so
+	This library stores the results of the G4 simulation for the example detector
+	DummyDetector.
 
-VIII) AnnularS1
+IX) MUST2
+	This directory includes two libraries:
+		libMust2Data.so
+		libMust2Physics.so
+	libMust2Data.so:
+		This library stores the results of the G4 simulation for the Must2
+		detector.
+		The format mimics what was used for the GANIL experiments after conversion 
+		of the raw data with GRU. Ask N. de Sereville for more informations. 
+	libMust2Physics.so:
+		This library deals with the treatment applied to the ROOT output file 
+		obtained from NPSimulation. This library is *only* used by NPAnalysis.
+
+X) AnnularS1
 	This directory includes one library:
 		libAnnularS1Data.so
 	This library stores the results of the G4 simulation for the S1 detector. 
@@ -79,7 +104,7 @@ VIII) AnnularS1
 	This class derives from TObject (ROOT) and its aim is to be stored in the 
 	output TTree of the G4 simulation.
 
-IX) GASPARD
+XI) GASPARD
 	This directory includes two libraries:
 		libGaspardData.so
 		libGaspardPhysics.so
@@ -92,4 +117,15 @@ IX) GASPARD
 		This library deals with the treatment applied to the ROOT output file 
 		obtained from NPSimulation. This library is *only* used by NPAnalysis.
 
-X) VDetector
+XII) VDetector
+	This directory includes two libraries:
+		libVDetector.so
+		libDetectorManager.so
+	libVDetector.so:
+		VDetector is a virtual class used for analysis purpose. It comes with several 
+		standard methods definition called in the analysis programm automatically.
+		Those method need to be implemented for each detector inheritted from the VDetector 
+		class.
+	libDetectorManager.so:
+		DetectorManager is a class that manages a vector of VDetector and call their 
+		common functions.
diff --git a/NPLib/SSSD/Makefile b/NPLib/SSSD/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..f9b71f05d93a9c1fdf589d168fb97e6b1d691bc6
--- /dev/null
+++ b/NPLib/SSSD/Makefile
@@ -0,0 +1,309 @@
+# Makefile for the ROOT test programs.
+# This Makefile shows nicely how to compile and link applications
+# using the ROOT libraries on all supported platforms.
+#
+# Copyright (c) 2000 Rene Brun and Fons Rademakers
+#
+# Author: Fons Rademakers, 29/2/2000
+
+ROOTCONFIG   := root-config
+
+ARCH         := $(shell $(ROOTCONFIG) --arch)
+PLATFORM     := $(shell $(ROOTCONFIG) --platform)
+ALTCC        := $(shell $(ROOTCONFIG) --cc)
+ALTCXX       := $(shell $(ROOTCONFIG) --cxx)
+ALTF77       := $(shell $(ROOTCONFIG) --f77)
+ALTLD        := $(shell $(ROOTCONFIG) --ld)
+
+#CXX           =
+ObjSuf        = o
+SrcSuf        = cxx
+ExeSuf        =
+DllSuf        = so
+OutPutOpt     = -o # keep whitespace after "-o"
+
+ifeq (debug,$(findstring debug,$(ROOTBUILD)))
+OPT           = -g
+OPT2          = -g
+else
+ifneq ($(findstring debug, $(strip $(shell $(ROOTCONFIG) --config))),)
+OPT           = -g
+OPT2          = -g
+else
+OPT           = -O
+OPT2          = -O2
+endif
+endif
+
+ROOTCFLAGS   := $(shell $(ROOTCONFIG) --cflags)
+ROOTLDFLAGS  := $(shell $(ROOTCONFIG) --ldflags)
+ROOTLIBS     := $(shell $(ROOTCONFIG) --libs)
+ROOTGLIBS    := $(shell $(ROOTCONFIG) --glibs)
+HASTHREAD    := $(shell $(ROOTCONFIG) --has-thread)
+ROOTDICTTYPE := $(shell $(ROOTCONFIG) --dicttype)
+NOSTUBS      := $(shell $(ROOTCONFIG) --nostubs)
+ROOTCINT     := rootcint
+
+ifeq ($(ARCH),linux)
+# Linux with egcs, gcc 2.9x, gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxkcc)
+# Linux with the KAI compiler
+CXX           = KCC --one_instantiation_per_object
+CXXFLAGS      = $(OPT) -fPIC +K0
+LD            = KCC
+LDFLAGS       = $(OPT) $(shell $(ROOTCONFIG) --cflags)
+SOFLAGS       =
+endif
+
+ifeq ($(ARCH),linuxicc)
+# Linux with Intel icc compiler
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppcgcc)
+# PPC Linux with gcc and glibc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64gcc)
+# Itanium Linux with gcc 2.9x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64sgi)
+# Itanium Linux with sgiCC
+CXX           = sgiCC
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = gsgiCC
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxia64ecc)
+# Itanium Linux with Intel icc (was ecc)
+ICC_MAJOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f1)
+ICC_MINOR    := $(shell icc -v 2>&1 | awk '{ if (NR==1) print $$2 }' | \
+                cut -d'.' -f2)
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -ftz
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664gcc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxppc64gcc)
+# PPC64 Linux with gcc 3.x
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxx8664icc)
+# AMD Opteron and Intel EM64T (64 bit mode) Linux with Intel icc compiler
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476 -wd1572
+LD            = icpc
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxalphagcc)
+# Alpha Linux with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxmips)
+# GNU/Linux on mips (BE/LE, O32/N32/N64) with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxhppa)
+# GNU/Linux on hppa with gcc
+CXX           = g++
+CXXFLAGS      = $(OPT2) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT2)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),linuxarm)
+# ARM Linux with egcs
+CXX           = g++
+CXXFLAGS      = $(OPT) -Wall -fPIC
+LD            = g++
+LDFLAGS       = $(OPT)
+SOFLAGS       = -shared
+endif
+
+ifeq ($(ARCH),macosx)
+# MacOS X with cc (GNU cc 2.95.2 and gcc 3.3)
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = g++
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined $(UNDEFOPT)
+endif
+
+ifeq ($(ARCH),macosxicc)
+# MacOS X with Intel icc compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+ifeq ($(MACOSX_MINOR),5)
+MACOSX_MINOR := 4
+endif
+CXX           = icc
+CXXFLAGS      = $(OPT) -fPIC -wd1476
+LD            = $(MACOSXTARGET) icpc
+LDFLAGS       = $(OPT)
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosx64)
+# MacOS X >= 10.4 with gcc 64 bit mode (GNU gcc 4.*)
+# Only specific option (-m64) comes from root-config
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = g++
+CXXFLAGS      = $(OPT2) -pipe -Wall -W -Woverloaded-virtual
+LD            = $(MACOSXTARGET) g++ -m64
+LDFLAGS       = $(OPT2) -bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+ifeq ($(subst $(MACOSX_MINOR),,1234),1234)
+DllSuf        = so
+else
+DllSuf        = dylib
+endif
+SOFLAGS       = -m64 -dynamiclib -single_module -undefined dynamic_lookup
+endif
+
+ifeq ($(ARCH),macosxxlc)
+# MacOS X with IBM xlC compiler
+MACOSX_MINOR := $(shell sw_vers | sed -n 's/ProductVersion://p' | cut -d . -f 2)
+MACOSXTARGET := MACOSX_DEPLOYMENT_TARGET=10.$(MACOSX_MINOR)
+CXX           = xlC
+CXXFLAGS      = $(OPT)
+LD            = $(MACOSXTARGET) xlC
+LDFLAGS       = $(OPT) -Wl,-bind_at_load
+# The SOFLAGS will be used to create the .dylib,
+# the .so will be created separately
+DllSuf        = dylib
+UNDEFOPT      = dynamic_lookup
+ifneq ($(subst $(MACOSX_MINOR),,12),12)
+UNDEFOPT      = suppress
+LD            = xlC
+endif
+SOFLAGS       = -qmkshrobj -single_module -undefined $(UNDEFOPT)
+endif
+
+CXXFLAGS     += $(ROOTCFLAGS)
+LDFLAGS      += $(ROOTLDFLAGS)
+LIBS          = $(ROOTLIBS) $(SYSLIBS)
+GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
+
+INCLUDE		= -I$(CLHEP_BASE_DIR)/include -I$(NPLIB)/include
+ 
+#------------------------------------------------------------------------------
+SHARELIB      =  libSSSDData.so libSSSDPhysics.so
+
+all:            $(SHARELIB)
+#------------------------------------------------------------------------------
+############### Detector ##############
+
+## SSSD ##
+libSSSDData.so:	TSSSDData.o	TSSSDDataDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TSSSDDataDict.cxx:	TSSSDData.h
+			rootcint -f $@ -c $^
+
+libSSSDPhysics.so:	TSSSDPhysics.o	TSSSDPhysicsDict.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
+
+TSSSDPhysicsDict.cxx:	TSSSDPhysics.h
+			rootcint -f $@ -c $^
+			
+# dependances
+TSSSDData.o:		TSSSDData.cxx	TSSSDData.h
+TSSSDPhysics.o:	TSSSDPhysics.cxx	TSSSDPhysics.h
+#######################################
+
+############# Clean and More ##########
+clean:
+	@rm -f core *~ *.o *Dict*
+
+distclean:
+	  make clean; rm -f *.so
+
+.SUFFIXES: .$(SrcSuf)
+
+###
+
+.$(SrcSuf).$(ObjSuf):
+	$(CXX) $(CXXFLAGS) $(INCLUDE) -c $<
+
+
diff --git a/NPLib/SSSD/TSSSDData.cxx b/NPLib/SSSD/TSSSDData.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..66d7b22393986cb749027650c8e7f102f822905d
--- /dev/null
+++ b/NPLib/SSSD/TSSSDData.cxx
@@ -0,0 +1,77 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : febuary 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold SSSD Raw data                                           *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <iostream>
+using namespace std;
+
+#include "TSSSDData.h"
+
+ClassImp(TSSSDData)
+
+TSSSDData::TSSSDData()
+{
+	// Default constructor
+
+	// SSSD
+	// Energy
+	fSSSD_StripE_DetectorNbr.clear()	;
+	fSSSD_StripE_StripNbr.clear()	;
+	fSSSD_StripE_Energy.clear()		;
+	// Time
+	fSSSD_StripT_DetectorNbr.clear()	;
+	fSSSD_StripT_StripNbr.clear()	;
+	fSSSD_StripT_Time.clear()		;
+
+}
+
+TSSSDData::~TSSSDData()
+{}
+
+void TSSSDData::Clear()
+{
+	// DSSD
+	// Energy
+	fSSSD_StripE_DetectorNbr.clear()	;
+	fSSSD_StripE_StripNbr.clear()	;
+	fSSSD_StripE_Energy.clear()		; 
+	// Time
+	fSSSD_StripT_DetectorNbr.clear()	;
+	fSSSD_StripT_StripNbr.clear()	;
+	fSSSD_StripT_Time.clear()		;
+}
+
+
+
+void TSSSDData::Dump() const
+{
+   cout << "XXXXXXXXXXXXXXXXXXXXXXXX New Event XXXXXXXXXXXXXXXXX" << endl;
+
+   // SSSD
+   // Energy
+   cout << "SSSD_StripE_Mult = " << fSSSD_StripE_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fSSSD_StripE_DetectorNbr.size(); i++)
+      cout << "DetNbr: " << fSSSD_StripE_DetectorNbr[i] << " Strip: " << fSSSD_StripE_StripNbr[i] << " Energy: " << fSSSD_StripE_Energy[i] << endl;
+   // Time
+   cout << "SSSD_StripXT_Mult = " << fSSSD_StripT_DetectorNbr.size() << endl;
+   for (UShort_t i = 0; i < fSSSD_StripT_DetectorNbr.size(); i++)
+      cout << "DetNbr: " << fSSSD_StripT_DetectorNbr[i] << " Strip: " << fSSSD_StripT_StripNbr[i] << " Time: " << fSSSD_StripT_Time[i] << endl;
+  
+}
diff --git a/NPLib/SSSD/TSSSDData.h b/NPLib/SSSD/TSSSDData.h
new file mode 100644
index 0000000000000000000000000000000000000000..7e90e7f0515b029ea4799ac39516cd4d5c6980c5
--- /dev/null
+++ b/NPLib/SSSD/TSSSDData.h
@@ -0,0 +1,76 @@
+#ifndef __SSSDDATA__
+#define __SSSDDATA__
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : febuary 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold the Single Side Striped Detector raw data                *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+#include <vector>
+#include "TObject.h"
+
+using namespace std ;
+class TSSSDData : public TObject {
+	private:
+		// SSSD
+		// Energy
+		vector<UShort_t>	fSSSD_StripE_DetectorNbr;
+		vector<UShort_t>	fSSSD_StripE_StripNbr;
+		vector<Double_t>	fSSSD_StripE_Energy;
+		// Time
+		vector<UShort_t>	fSSSD_StripT_DetectorNbr;
+		vector<UShort_t>	fSSSD_StripT_StripNbr;
+		vector<Double_t>	fSSSD_StripT_Time;
+
+
+	public:
+		TSSSDData();
+		virtual ~TSSSDData();
+
+		void	Clear();
+                void    Clear(const Option_t*) {};
+		void	Dump() const;
+
+		/////////////////////           SETTERS           ////////////////////////
+		// DSSD
+		// (X,E)
+		void	SetEnergyDetectorNbr	(UShort_t DetNbr) 	{ fSSSD_StripE_DetectorNbr.push_back(DetNbr)	;}
+		void	SetEnergyStripNbr			(UShort_t StripNbr) { fSSSD_StripE_StripNbr.push_back(StripNbr)		;}
+		void	SetEnergy							(Double_t Energy)   { fSSSD_StripE_Energy.push_back(Energy)				;}
+		// (X,T)
+		void	SetTimeDetectorNbr		(UShort_t DetNbr) 	{ fSSSD_StripT_DetectorNbr.push_back(DetNbr)	;}
+		void	SetTimeStripNbr				(UShort_t StripNbr) { fSSSD_StripT_StripNbr.push_back(StripNbr)		;}
+		void	SetTime								(Double_t Time)     { fSSSD_StripT_Time.push_back(Time)						;}
+
+		/////////////////////           GETTERS           ////////////////////////
+		// DSSD
+		// (X,E)
+		UShort_t	GetEnergyMult					()           	{	return fSSSD_StripE_DetectorNbr.size()	;}
+		UShort_t	GetEnergyDetectorNbr	(Int_t i) 		{	return fSSSD_StripE_DetectorNbr.at(i)		;}
+		UShort_t	GetEnergyStripNbr			(Int_t i)    	{	return fSSSD_StripE_StripNbr.at(i)			;}
+		Double_t	GetEnergy							(Int_t i)     {	return fSSSD_StripE_Energy.at(i)				;}
+		// (X,T)
+		UShort_t	GetTimeMult						()            {	return fSSSD_StripT_DetectorNbr.size()	;}
+		UShort_t	GetTimeDetectorNbr		(Int_t i) 		{	return fSSSD_StripT_DetectorNbr.at(i)		;}
+		UShort_t	GetTimeStripNbr				(Int_t i)   	{	return fSSSD_StripT_StripNbr.at(i)			;}
+		Double_t	GetTime								(Int_t i)     {	return fSSSD_StripT_Time.at(i)					;}
+	
+		ClassDef(TSSSDData,1)  // SSSDData structure
+};
+
+#endif
diff --git a/NPLib/SSSD/TSSSDPhysics.cxx b/NPLib/SSSD/TSSSDPhysics.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..63be1855e636503767ddc451f875d8821984c922
--- /dev/null
+++ b/NPLib/SSSD/TSSSDPhysics.cxx
@@ -0,0 +1,304 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : november 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold SSSD  Physics                                            *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+//	NPL
+#include "TSSSDPhysics.h"
+#include "RootOutput.h"
+#include "RootInput.h"
+
+//	STL
+#include <iostream>
+#include <sstream>
+#include <fstream>
+#include <limits>
+#include <stdlib.h>
+using namespace std;
+
+//	ROOT
+#include "TChain.h"
+
+//	tranform an integer to a string
+		string itoa(int value)
+			{
+			  std::ostringstream o;
+			
+			  if (!(o << value))
+			    return ""	;
+			    
+			  return o.str();
+			}
+
+ClassImp(TSSSDPhysics)
+///////////////////////////////////////////////////////////////////////////
+TSSSDPhysics::TSSSDPhysics()
+	{		
+		NumberOfDetector = 0 				;
+		EventData = new TSSSDData		;
+		EventPhysics = this					;
+	}
+///////////////////////////////////////////////////////////////////////////
+TSSSDPhysics::~TSSSDPhysics()
+	{}
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::Clear()
+	{
+		DetectorNumber	.clear()	;
+		StripNumber			.clear()	;
+		Energy					.clear()	;
+		Time						.clear()	;
+	}
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::ReadConfiguration(string Path) 
+	{
+   ifstream ConfigFile           ;
+   ConfigFile.open(Path.c_str()) ;
+   string LineBuffer          ;
+   string DataBuffer          ;
+
+   double TLX , BLX , BRX , TRX , TLY , BLY , BRY , TRY , TLZ , BLZ , BRZ , TRZ   ;
+   double Theta = 0 , Phi = 0 , R = 0 , beta_u = 0 , beta_v = 0 , beta_w = 0      ;
+   bool check_A = false   ;
+   bool check_B = false ;
+   bool check_C = false   ;
+   bool check_D = false ;
+
+   bool check_Theta = false   ;
+   bool check_Phi  = false  ;
+   bool check_R     = false   ;
+   bool check_beta = false  ;
+   bool ReadingStatus = false ;
+
+ while (!ConfigFile.eof()) 
+ 	{
+      
+		getline(ConfigFile, LineBuffer);
+
+		//	If line is a Start Up ThinSi bloc, Reading toggle to true      
+		  	if (LineBuffer.compare(0, 6, "ThinSi") == 0) 
+		    	{
+		      	cout << "Detector found: " << endl   ;        
+		      	ReadingStatus = true ;
+		    	}
+
+		//	Else don't toggle to Reading Block Status
+		else ReadingStatus = false ;
+
+		//	Reading Block
+		while(ReadingStatus)
+			{
+					// Pickup Next Word 
+				ConfigFile >> DataBuffer ;
+
+				//	Comment Line 
+				if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+					//	Finding another telescope (safety), toggle out
+				else if (DataBuffer.compare(0, 6, "ThinSi") == 0) {
+					cout << "WARNING: Another Telescope is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+					ReadingStatus = false ;
+				}
+
+					 //Position method
+		         else if (DataBuffer.compare(0, 3, "A=") == 0) {
+		            check_A = true;
+		            ConfigFile >> DataBuffer ;
+		            TLX = atof(DataBuffer.c_str()) ;
+		            ConfigFile >> DataBuffer ;
+		            TLY = atof(DataBuffer.c_str()) ;
+		            ConfigFile >> DataBuffer ;
+		            TLZ = atof(DataBuffer.c_str()) ;
+
+		         }
+				
+				else if (DataBuffer.compare(0, 3, "B=") == 0) {
+					check_B = true;
+					ConfigFile >> DataBuffer ;
+					BLX = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					BLY = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					BLZ = atof(DataBuffer.c_str()) ;
+
+				}
+
+				else if (DataBuffer.compare(0, 3, "C=") == 0) {
+					check_C = true;
+					ConfigFile >> DataBuffer ;
+					BRX = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					BRY = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					BRZ = atof(DataBuffer.c_str()) ;
+
+				}
+
+				else if (DataBuffer.compare(0, 3, "D=") == 0) {
+					check_D = true;
+					ConfigFile >> DataBuffer ;
+					TRX = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					TRY = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					TRZ = atof(DataBuffer.c_str()) ;
+
+				}
+
+									
+				//Angle method
+				else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+					check_Theta = true;
+					ConfigFile >> DataBuffer ;
+					Theta = atof(DataBuffer.c_str()) ;
+				}
+
+				else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+					check_Phi = true;
+					ConfigFile >> DataBuffer ;
+					Phi = atof(DataBuffer.c_str()) ;
+				}
+
+				else if (DataBuffer.compare(0, 2, "R=") == 0) {
+					check_R = true;
+					ConfigFile >> DataBuffer ;
+					R = atof(DataBuffer.c_str()) ;
+				}
+
+
+				else if (DataBuffer.compare(0, 5, "BETA=") == 0) {
+					check_beta = true;
+					ConfigFile >> DataBuffer ;
+					beta_u = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					beta_v = atof(DataBuffer.c_str()) ;
+					ConfigFile >> DataBuffer ;
+					beta_w = atof(DataBuffer.c_str()) ;
+				}
+		      
+		         	///////////////////////////////////////////////////
+					//	If no Detector Token and no comment, toggle out
+		         else 
+		         	{ReadingStatus = false; cout << "Wrong Token Sequence: Getting out " << DataBuffer << endl ;}
+		         
+		         	/////////////////////////////////////////////////
+		         	//	If All necessary information there, toggle out
+		         
+		         if ( (check_A && check_B && check_C && check_D) || (check_Theta && check_Phi && check_R && check_beta) ) 
+		         	{ 
+				         	ReadingStatus = false; 
+				         	
+				         	///Add The previously define telescope
+		         			//With position method
+				         	 if ((check_A && check_B && check_C && check_D) || !(check_Theta && check_Phi && check_R)) {
+						            	 NumberOfDetector++;
+						         }
+
+					         //with angle method
+					         else if ((check_Theta && check_Phi && check_R) || !(check_A && check_B && check_C && check_D)) {
+						         		  NumberOfDetector++;
+						         }
+						         
+						        //	Reinitialisation of Check Boolean 
+						        
+								check_A = false   ;
+								check_B = false ;
+								check_C = false   ;
+								check_D = false ;
+
+								check_Theta = false   ;
+								check_Phi  = false  ;
+								check_R     = false   ;
+								check_beta = false  ;
+								ReadingStatus = false ;
+							         
+		         	}
+		         	
+						}
+					}
+
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::AddParameterToCalibrationManager()
+	{
+		CalibrationManager* Cal = CalibrationManager::getInstance();
+		
+		for(int i = 0 ; i < NumberOfDetector ; i++)
+			{
+			
+				for( int j = 0 ; j < 16 ; j++)
+					{
+						Cal->AddParameter("SSSD", "Detector"+itoa(i+1)+"_Strip"+itoa(j+1)+"_E","SSSD_Detector"+itoa(i+1)+"_Strip"+itoa(j+1)+"_E")	;
+						Cal->AddParameter("SSSD", "Detector"+itoa(i+1)+"_Strip"+itoa(j+1)+"_T","SSSD_Detector"+itoa(i+1)+"_Strip"+itoa(j+1)+"_T")	;	
+					}
+		
+			}
+	}
+	
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::InitializeRootInput()
+	{
+		TChain* inputChain = RootInput::getInstance()->GetChain()	;
+		inputChain->SetBranchStatus ( "ThinSi" 		, true )					;
+		inputChain->SetBranchStatus ( "fSSSD_*" 	, true )					;
+		inputChain->SetBranchAddress( "ThinSi" 		, &EventData )		;
+	}	
+
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::InitializeRootOutput()
+	{
+		TTree* outputTree = RootOutput::getInstance()->GetTree()			;
+		outputTree->Branch( "SSSD" , "TSSSDPhysics" , &EventPhysics )	;
+	}
+
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::BuildPhysicalEvent()
+	{
+		BuildSimplePhysicalEvent()	;
+	}
+
+///////////////////////////////////////////////////////////////////////////
+void TSSSDPhysics::BuildSimplePhysicalEvent()
+	{
+		if( EventData->GetEnergyMult() == EventData->GetTimeMult() )
+			{
+				for(unsigned int i = 0 ; i < EventData->GetEnergyMult() ; i++)
+					{
+					
+						DetectorNumber	.push_back( EventData->GetEnergyDetectorNbr(i) )	;
+						StripNumber			.push_back( EventData->GetEnergyStripNbr(i)    )	;
+						
+						Energy					.push_back(
+							CalibrationManager::getInstance()->ApplyCalibration(	"SSSD/Detector" + itoa( EventData->GetEnergyDetectorNbr(i) ) + "_Strip" + itoa( EventData->GetEnergyStripNbr(i) ) +"_E",	
+																																		EventData->GetEnergy(i) )
+																			)	;
+																			
+						Time						.push_back(
+							CalibrationManager::getInstance()->ApplyCalibration(	"SSSD/Detector" + itoa( EventData->GetEnergyDetectorNbr(i) ) + "_Strip" + itoa( EventData->GetEnergyStripNbr(i) ) +"_T",	
+																																		EventData->GetTime(i) )
+																			)	;
+					}
+			}
+		
+		else return ;
+		
+	}
+
diff --git a/NPLib/SSSD/TSSSDPhysics.h b/NPLib/SSSD/TSSSDPhysics.h
new file mode 100644
index 0000000000000000000000000000000000000000..21bc790fb7067a44b6beef2e3f1da94890a10b97
--- /dev/null
+++ b/NPLib/SSSD/TSSSDPhysics.h
@@ -0,0 +1,92 @@
+#ifndef __SSSDPhysics__
+#define __SSSDPhysics__
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : November 2009                                            *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class hold the Single Side Striped Detector  Physics                *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *                                                                           *
+ *                                                                           *
+ *****************************************************************************/
+//	STL
+#include <vector>
+using namespace std ;
+
+//	ROOT
+#include "TObject.h"
+
+//	NPL
+#include "TSSSDData.h"
+#include "../include/VDetector.h"
+#include "../include/CalibrationManager.h"
+
+class TSSSDPhysics : public TObject, public NPA::VDetector
+{
+	public:	//	Constructor and Destructor
+		TSSSDPhysics();
+		~TSSSDPhysics();
+
+
+	public:	//	Calibrated Data
+
+		vector<UShort_t>	DetectorNumber	;
+		vector<UShort_t>	StripNumber			;
+		vector<Double_t>	Energy					;
+		vector<Double_t>	Time						;
+
+	public:	//	inherrited from VDetector
+		//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
+		void ReadConfiguration(string) 				;
+		
+
+		//	Add Parameter to the CalibrationManger
+		void AddParameterToCalibrationManager()	;		
+			
+		
+		//	Activated associated Branches and link it to the private member DetectorData address
+		//	In this method mother Branches (Detector) AND daughter leaf (fDetector_parameter) have to be activated
+		void InitializeRootInput() 					;
+
+
+		//	Create associated branches and associated private member DetectorPhysics address
+		void InitializeRootOutput() 		 		;
+		
+		
+		//	This method is called at each event read from the Input Tree. Aime is to build treat Raw dat in order to extract physical parameter. 
+		void BuildPhysicalEvent()					;
+		
+		
+		//	Same as above, but only the simplest event and/or simple method are used (low multiplicity, faster algorythm but less efficient ...).
+		//	This method aimed to be used for analysis performed during experiment, when speed is requiered.
+		//	NB: This method can eventually be the same as BuildPhysicalEvent.
+		void BuildSimplePhysicalEvent()				;
+
+		//	Those two method all to clear the Event Physics or Data
+		void ClearEventPhysics()		{Clear();}		
+		void ClearEventData()				{EventData->Clear();}		
+
+	private:	// Data not writted in the tree
+				int								NumberOfDetector	;//!
+				TSSSDData* 	  	EventData					;//!
+				TSSSDPhysics* 	  EventPhysics			;//!
+
+		void	Clear();
+    void  Clear(const Option_t*) {};
+	
+		ClassDef(TSSSDPhysics,1)  // SSSDPhysics structure
+};
+
+#endif
diff --git a/NPLib/Tools/NPEnergyLoss.cxx b/NPLib/Tools/NPEnergyLoss.cxx
index cf6d582c19f912142b31558ed86d7280c232085e..f41ac75f9b09e671ac9c8875d142358d2934c5a2 100644
--- a/NPLib/Tools/NPEnergyLoss.cxx
+++ b/NPLib/Tools/NPEnergyLoss.cxx
@@ -56,34 +56,46 @@ EnergyLoss::~EnergyLoss()
 	{}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
-EnergyLoss::EnergyLoss(string Path , int NumberOfSlice=100 , int LiseColumn=0 , int NumberOfMass=1) 
+EnergyLoss::EnergyLoss(string Path , string Source, int NumberOfSlice=100 ,  int LiseColumn , int NumberOfMass) 
 	{ 
 	
 	fNumberOfSlice = NumberOfSlice ; 
 	fNumberOfMass  = NumberOfMass  ;
 	
 	string globalPath = getenv("NPTOOL");
-	Path = globalPath + "/Inputs/dEdX/" + Path;
+	Path = globalPath + "/Inputs/EnergyLoss/" + Path;
 	
 	cout << "///////////////////////////////// " << endl ;
 	cout << "Initialising an EnergyLoss object " << endl ;
-	
-	 //If LiseColumn is set to 0 File type is expected to be from SRIM
-	 if (LiseColumn == 0)
-	 	{
-			// Opening dE/dX file
-
+		
 		ifstream TableFile	;
 		TableFile.open(Path.c_str())	;
 
-		if ( !TableFile )
-		    {
-				cout << "Failed to open file " << Path << endl;
-				return;
-		    }	
-		 
-		else
-		   	{
+ 		// Opening dE/dX file
+	 if(!TableFile) cout << "ERROR: TABLE FILE NOT FOUND" << endl; 
+	  
+	 if (Source == "G4Table")
+	 	{
+	   	cout << "Reading Energy Loss File: " << Path << endl ;
+			// Reading Data
+			double energy, total;
+			string dummy;
+			//skipped first line
+			getline(TableFile,dummy);
+			while ( TableFile >> energy)
+	     {
+				fEnergy.push_back ( energy*MeV )				;
+				TableFile >> total;
+				fdEdX_Total.push_back ( total*MeV/micrometer )	;
+				}
+	   
+	  		// Close File
+	   		TableFile.close();
+				   	
+			}
+			
+		else if (Source == "SRIM")	
+	   	{
 				// Reading Data
 				double energy, nuclear, electronic;
 				string unit, dummy;
@@ -104,49 +116,37 @@ EnergyLoss::EnergyLoss(string Path , int NumberOfSlice=100 , int LiseColumn=0 ,
 		   
 		  		// Close File
 		   		TableFile.close();
-		   	}
-			
-		}
-		
-		//Else File is expected to be from Lise, and LiseColumn gives which model to take
-		else
-			{
-				// Opening dE/dX file
-
-				ifstream TableFile	;
-				TableFile.open(Path.c_str())	;
+	   	}
 
-				if ( !TableFile )
-				    {
-						cout << "Failed to open file " << Path << endl;
-						return;
-				    }	
-				   
-				else
-				   	{ cout << "Reading Energy Loss File: " << Path << endl ;
-						// Reading Data
-						double energy=0, energyloss=0;
-						string dummy;				
-						// skipping comment first line		
-						getline(TableFile,dummy);
-						
-						while ( TableFile >> energy )
-							{ 
-								for (int k = 0 ; k < 11 ; k++ )
-									{
-										TableFile >> dummy ;
-										if (k+1==LiseColumn) energyloss = atof(dummy.c_str()) ;
-									}
-								fEnergy.push_back (energy*MeV) ;
-								fdEdX_Total.push_back(energyloss*MeV/micrometer);
+		else if(Source == "LISE")
+			{
+		   	cout << "Reading Energy Loss File: " << Path << endl ;
+				// Reading Data
+				double energy=0, energyloss=0;
+				string dummy;				
+				// skipping comment first line		
+				getline(TableFile,dummy);
+				
+				while ( TableFile >> energy )
+					{ 
+						for (int k = 0 ; k < 11 ; k++ )
+							{
+								TableFile >> dummy ;
+								if (k+1==LiseColumn) energyloss = atof(dummy.c_str()) ;
 							}
-				   
-				  		// Close File
-				   		TableFile.close();
-				   	}
-					
+						fEnergy.push_back (energy*MeV) ;
+						fdEdX_Total.push_back(energyloss*MeV/micrometer);
+					}
+		   
+		  		// Close File
+		   		TableFile.close();
+			}
 			
+		else
+			{
+				cout << "ERROR : Wrong Source Type" << endl ;
 			}
+			
 			fInter = new Interpolator( fEnergy , fdEdX_Total	)		;
 			cout << "///////////////////////////////// " << endl ;
 	}
@@ -208,10 +208,8 @@ double EnergyLoss::EvaluateTotalLoss(double Energy) const
 				return -1000;
 			}
 	
-	   Interpolator* s = new Interpolator( fEnergy , fdEdX_Total )	;   
-	   double val = s->Eval(Energy)									;
-	   
-	   delete s		;   
+	   double val = fInter->Eval(Energy)									;
+	    
 	   return val	;
 	}
 
@@ -249,17 +247,17 @@ double EnergyLoss::Slow(	double Energy 			, // Energy of the detected particle
 			}
 		   
 		delete s		;
-		return slow		;
+		return slow	;
 	}
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-double EnergyLoss::EvaluateInitialEnergy(	double Energy 			, // Energy of the detected particle
-		   									double TargetThickness	, // Target Thickness at 0 degree
-		   									double Angle			) // Particle Angle
-		   									const
+double EnergyLoss::EvaluateInitialEnergy(	double Energy 					, // Energy of the detected particle
+		   																		double TargetThickness	, // Target Thickness at 0 degree
+		   																		double Angle						) // Particle Angle
+		   																		const
 	{
 	
 		//	Lise file are given in MeV/u
-		//	For SRIM file fNumberOfMass = 1 whatever is the nucleus, file are given in MeV
+		//	For SRIM and geant4 file fNumberOfMass = 1 whatever is the nucleus, file are given in MeV
 		Energy = Energy / (double) fNumberOfMass ;
 	
 		if (Angle > halfpi) Angle = pi-Angle								;
@@ -270,7 +268,7 @@ double EnergyLoss::EvaluateInitialEnergy(	double Energy 			, // Energy of the de
 		for (int i = 0; i < fNumberOfSlice ; i++) 
 			{
 			    double de = fInter->Eval(Energy) * SliceThickness	;
-			    Energy	+= de/fNumberOfMass							;
+			    Energy	+= de/fNumberOfMass												;
 			}
 			
 		return (Energy*fNumberOfMass)	;
diff --git a/NPLib/Tools/NPEnergyLoss.h b/NPLib/Tools/NPEnergyLoss.h
index 10616258d3f930beb127ad52d6e1e5d5f0543d9f..080c3298a0ccd631bff74667bd76eda58f40b028 100644
--- a/NPLib/Tools/NPEnergyLoss.h
+++ b/NPLib/Tools/NPEnergyLoss.h
@@ -60,10 +60,11 @@ namespace NPL
 		 
 		 public :	//	Constructor
 		   EnergyLoss();
-		   EnergyLoss(   string Path 		,	//	Path of dE/dX table file
-		   				 int NumberOfSlice	,   //	Low number = Faster, High Number = more accurate / typical: 100 to 1000
-		   				 int LiseColumns	,	//	Indicate which model to read in a lise File, set to 0 (Default value) for a SRIM file
-		   				 int NumberOfMass	);	//	Number of mass A of the nucleus (used only for Lise file)	
+		   EnergyLoss(   	string Path 				,	//	Path of dE/dX table file
+		   								string Source  			, // Type of file : Geant4,Lise,SRIM
+		   				 				int NumberOfSlice		, //	Low number = Faster, High Number = more accurate / typical: 100 to 1000
+		   								int LiseColumns=0		,	//	Indicate which model to read in a lise File, set to 0 (Default value) for a SRIM file
+		   				 				int NumberOfMass=1	);//	Number of mass A of the nucleus (used only for Lise file)	
 		   ~EnergyLoss();
 		 
 		 private :	//	dE/dX, slice parameter
diff --git a/NPLib/Tools/NPReaction.cxx b/NPLib/Tools/NPReaction.cxx
index 30c5360df7615ae5381ec5c6fc900926aa111f96..13121b3ec5736bede26ffdb8bb3803707e436e9b 100644
--- a/NPLib/Tools/NPReaction.cxx
+++ b/NPLib/Tools/NPReaction.cxx
@@ -27,7 +27,7 @@
  *	                                                                         *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *                                                                           *
+ *     Based on previous work by N.de Sereville                              *
  *                                                                           *
  *****************************************************************************/
  
@@ -62,6 +62,7 @@ Reaction::Reaction()
    fThetaCM    = 0;
    fExcitation = 0;
    fQValue     = 0;
+   initializePrecomputeVariable();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
@@ -113,6 +114,7 @@ void Reaction::SetEveryThing(string name1, string name2, string name3, string na
    CrossSectionSize = CrossSectionBuffer.size();
    CrossSection = new double[CrossSectionSize] ;
    for(int i = 0 ; i <CrossSectionSize ; i++ )	CrossSection[i] = CrossSectionBuffer[i];
+   initializePrecomputeVariable();
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
@@ -136,33 +138,6 @@ void Reaction::KineRelativistic(double &ThetaLab3, double &EnergieLab3,
 // 2-body relativistic kinematics: direct + inverse
 // EnergieLab3,4 : lab energy in MeV of the 2 ejectiles
 // ThetaLab3,4   : angles in rad
-
-   double m1 = fNoy1->Mass();
-   double m2 = fNoy2->Mass();
-   double m3 = fNoy3->Mass();
-   double m4 = fNoy4->Mass() + fExcitation;
-
-   // center-of-mass velocity
-   double WtotLab = (fBeamEnergy + m1) + m2;
-   double P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
-   double B = P1 / WtotLab;
-   double G = 1 / sqrt(1 - pow(B,2));
-
-   // total energy of the ejectiles in the center-of-mass
-   double W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
-   		   / (2 * G * WtotLab);
-   double W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
-   		   / (2 * G * WtotLab);
-
-   // velocity of the ejectiles in the center-of-mass
-   double beta3cm  = sqrt(1 - pow(m3,2)/pow(W3cm,2));
-   double beta4cm  = sqrt(1 - pow(m4,2)/pow(W4cm,2));
-//   double gamma3cm = 1 / sqrt(1 - pow(beta3cm,2));
-//   double gamma4cm = 1 / sqrt(1 - pow(beta4cm,2));
-
-   // Constants of the kinematics
-   double K3 = B / beta3cm;
-   double K4 = B / beta4cm;
    
    // case of inverse kinematics
    double theta = fThetaCM;
@@ -184,6 +159,7 @@ void Reaction::KineRelativistic(double &ThetaLab3, double &EnergieLab3,
       cout << "Problem for energy conservation" << endl;
    EnergieLab3 = W3lab - m3;
    EnergieLab4 = W4lab - m4;
+   
 }
 
 
@@ -193,11 +169,6 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
 		// EnergyLab in MeV
 		// ThetaLab in rad
 
-		double m1 = fNoy1->Mass()	;
-		double m2 = fNoy2->Mass()	;
-		double m3 = fNoy3->Mass()	;
-		double m4 = fNoy4->Mass()	;	
-
 		double P1 = sqrt(2*m1*fBeamEnergy+(fBeamEnergy*fBeamEnergy))	;
 		double P3 = sqrt(2*m3*EnergyLab+(EnergyLab*EnergyLab))			;
 		double P4 = sqrt(P1*P1+P3*P3-(2*P1*P3*cos(ThetaLab)))			;
@@ -230,14 +201,10 @@ double Reaction::ReconstructRelativistic(double EnergyLab, double ThetaLab) cons
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
 //Return ThetaCM									
-double  Reaction::EnergyLabToThetaCM( double EnergyLab , double ExcitationEnergy = -500) const
+double  Reaction::EnergyLabToThetaCM( double EnergyLab , double ExcitationEnergy ) const
 	{
 		if(ExcitationEnergy == -500) ExcitationEnergy = fExcitation; 
-	
-		double m1 = fNoy1->Mass()				;
-		double m2 = fNoy2->Mass()				;
-		double m3 = fNoy3->Mass()				;
-		double m4 = (fNoy4->Mass()+ExcitationEnergy)	;
+
 		double E1 = (fBeamEnergy+m1)			;
 		double E3 = (EnergyLab+m3)				;
 		  
@@ -397,7 +364,34 @@ void Reaction::ReadConfigurationFile(string Path)
 	}
 	
 	
+void Reaction::initializePrecomputeVariable()
+	{
+		 m1 = fNoy1->Mass();
+		 m2 = fNoy2->Mass();
+		 m3 = fNoy3->Mass();
+		 m4 = fNoy4->Mass() + fExcitation;
+
+		// center-of-mass velocity
+		 WtotLab = (fBeamEnergy + m1) + m2;
+		 P1 = sqrt(pow(fBeamEnergy,2) + 2*m1*fBeamEnergy);
+		 B = P1 / WtotLab;
+		 G = 1 / sqrt(1 - pow(B,2));
+
+		// total energy of the ejectiles in the center-of-mass
+		 W3cm = (pow(WtotLab,2) + pow(G,2)*(pow(m3,2) - pow(m4,2)))
+			   / (2 * G * WtotLab);
+		 W4cm = (pow(WtotLab,2) + pow(G,2)*(pow(m4,2) - pow(m3,2)))
+			   / (2 * G * WtotLab);
+
+		// velocity of the ejectiles in the center-of-mass
+		 beta3cm  = sqrt(1 - pow(m3,2)/pow(W3cm,2));
+		 beta4cm  = sqrt(1 - pow(m4,2)/pow(W4cm,2));
+
+		// Constants of the kinematics
+		 K3 = B / beta3cm;
+		 K4 = B / beta4cm;
 	
+	}
 	
 	
 	
diff --git a/NPLib/Tools/NPReaction.h b/NPLib/Tools/NPReaction.h
index 3ab556da14523e1786fd56ccfe701af5d0af30a5..bb8f8932e62016176f8bd959bb94d29374da07af 100644
--- a/NPLib/Tools/NPReaction.h
+++ b/NPLib/Tools/NPReaction.h
@@ -63,26 +63,54 @@ namespace NPL
 			double	 		fThetaCM			;	//	Center-of-mass angle in radian
 			double	 		fExcitation			;	//	Excitation energy in MeV
 			double*			CrossSection		;	//	Differential CrossSection
-			int				CrossSectionSize	;	//	Size of array containing Differention CrossSection
+			int					CrossSectionSize	;	//	Size of array containing Differention CrossSection
 		   
 		public:
 			// Getters and Setters
-			void				SetBeamEnergy		(double efais)	{fBeamEnergy = efais;}
+			void				SetBeamEnergy		(double efais)	{fBeamEnergy = efais;initializePrecomputeVariable();}
 			void				SetThetaCM			(double angle)	{fThetaCM = angle;}
-			void				SetExcitation		(double exci)	{fExcitation = exci;}
-			double				GetBeamEnergy() 	const		 	{return fBeamEnergy;}
-			double				GetThetaCM() 		const 			{return fThetaCM;}
-			double				GetExcitation() 	const 			{return fExcitation;}
-			double				GetQValue() 		const 			{return fQValue;}
-			Nucleus*			GetNucleus1() 		const 			{return fNoy1;}
-			Nucleus*			GetNucleus2() 		const 			{return fNoy2;}
-			Nucleus*			GetNucleus3() 		const 			{return fNoy3;}
-			Nucleus*			GetNucleus4() 		const 			{return fNoy4;}  
-			double*				GetCrossSection()	const			{return CrossSection;} 
+			void				SetExcitation		(double exci)	{fExcitation = exci;initializePrecomputeVariable();}
+			double			GetBeamEnergy() 	const		 	{return fBeamEnergy;}
+			double			GetThetaCM() 		const 			{return fThetaCM;}
+			double			GetExcitation() 	const 			{return fExcitation;}
+			double			GetQValue() 		const 			{return fQValue;}
+			Nucleus*		GetNucleus1() 		const 			{return fNoy1;}
+			Nucleus*		GetNucleus2() 		const 			{return fNoy2;}
+			Nucleus*		GetNucleus3() 		const 			{return fNoy3;}
+			Nucleus*		GetNucleus4() 		const 			{return fNoy4;}  
+			double*			GetCrossSection()	const			{return CrossSection;} 
 			int					GetCrossSectionSize()		const			{return CrossSectionSize;} 
 
-			//	Kinematics	//
-		   
+
+
+
+		private:	//	intern precompute variable
+			void initializePrecomputeVariable();
+			double m1 ;
+			double m2 ;
+			double m3 ;
+			double m4 ;
+
+			// center-of-mass velocity
+			double WtotLab ;
+			double P1 ;
+			double B ;
+			double G ;
+
+			// total energy of the ejectiles in the center-of-mass
+			double W3cm ;
+			double W4cm ;
+
+			// velocity of the ejectiles in the center-of-mass
+			double beta3cm  ;
+			double beta4cm  ;
+
+			// Constants of the kinematics
+			double K3 ;
+			double K4 ;
+
+			
+		 public:	//	Kinematics
 			//	Compute ThetaLab and EnergyLab for product of reaction
 			void		KineRelativistic(	double &ThetaLab3	, 
 										 	double &EnergieLab3	,
@@ -94,7 +122,7 @@ namespace NPL
 													double ThetaLab) const;
 			//	Return ThetaCM									
 			double 		EnergyLabToThetaCM( 	double EnergyLab 		,	//	Energy Measured in lab ref
-											   	double ExcitationEnergy ) 	//	Excitation Energy previously calculated. If no argument given, fExcitation is used
+											   	double ExcitationEnergy = -500) 	//	Excitation Energy previously calculated. If no argument given, fExcitation is used
 												const;
 			
 			//	Other	//
diff --git a/NPLib/VDetector/DetectorManager.cxx b/NPLib/VDetector/DetectorManager.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..398198c956ba99c9791339f38dd3d3291b79f9b0
--- /dev/null
+++ b/NPLib/VDetector/DetectorManager.cxx
@@ -0,0 +1,330 @@
+#include "DetectorManager.h"
+
+//	STL
+#include <iostream>
+#include <fstream>
+#include <cstdlib>
+
+//	Detector	
+#include "../MUST2/TMust2Physics.h"
+#include "../SSSD/TSSSDPhysics.h"
+#include "../Plastic/TPlasticPhysics.h"
+#include "../GASPARD/GaspardTracker.h"
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+//	Default Constructor
+DetectorManager::DetectorManager()	
+{
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+//	Default Desstructor
+DetectorManager::~DetectorManager()
+{
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+//	Read stream at ConfigFile and pick-up Token declaration of Detector
+void DetectorManager::ReadConfigurationFile(string Path)	
+{
+   ////////General Reading needs////////
+   string LineBuffer;
+   string DataBuffer;
+
+   /////////Boolean////////////////////
+   bool MUST2               = false;
+   bool AddThinSi           = false;
+   bool ScintillatorPlastic = false;
+   bool GeneralTarget       = false;
+   bool GPDTracker          = false;
+
+   //////////////////////////////////////////////////////////////////////////////////////////
+   string GlobalPath = getenv("NPTOOL");
+   Path = GlobalPath + "/Inputs/DetectorConfiguration/" + Path;
+   ifstream ConfigFile;
+   ConfigFile.open(Path.c_str());
+
+   if (ConfigFile.is_open()) {
+      cout << "/////////////////////////////" << endl;
+      cout << " Configuration file " << Path << " loading " << endl;
+   }
+   else {
+      cout << " Error, no configuration file" << Path << " found" << endl;
+      return;
+   }
+
+
+   while (!ConfigFile.eof()) {
+      // Pick-up next line
+      getline(ConfigFile, LineBuffer);
+      //Search for comment Symbol: %
+      if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/ ;}
+
+      ////////////////////////////////////////////
+      //////////// Search for Gaspard ////////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
+         GPDTracker = true ;
+         cout << "//////// Gaspard Tracker ////////" << endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new GaspardTracker();
+
+         // Read Position of Telescope
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector("GASPARD", myDetector);
+      }
+
+      ////////////////////////////////////////////
+      //////// Search for MUST2 Array  ////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
+         MUST2 = true;
+         cout << "//////// MUST2 Array ////////" << endl << endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new TMust2Physics();
+
+         // Read Position of Telescope
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector("MUST2", myDetector);
+      }
+
+      ////////////////////////////////////////////
+      ////////// Search for ThinSi (SSSD)/////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
+         AddThinSi = true ;
+         cout << "//////// Thin Si ////////" << endl << endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new TSSSDPhysics();
+
+         // Read Position of Telescope
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector("SSSD", myDetector);
+      }
+
+      ////////////////////////////////////////////
+      ///////////// Search for Plastic ///////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 19, "ScintillatorPlastic") == 0 && ScintillatorPlastic == false) {
+         ScintillatorPlastic = true;
+         cout << "//////// Plastic ////////" << endl << endl;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new TPlasticPhysics();
+         // Read Position of Telescope
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
+
+         // Add array to the VDetector Vector
+         AddDetector("Plastic", myDetector);
+      }
+
+      ////////////////////////////////////////////
+      //////////// Search for Target /////////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
+         GeneralTarget = true ;
+         cout << "////////// Target ///////////" << endl << endl;
+
+         // jump one line
+         getline(ConfigFile, LineBuffer);
+         getline(ConfigFile, LineBuffer);
+
+         bool check_Thickness = false;
+         bool check_Angle     = false;
+         bool check_Radius    = false;
+         bool check_Material  = false;
+         bool check_X         = false;
+         bool check_Y         = false;
+         bool check_Z         = false;
+
+         bool ReadingStatusTarget = true;
+         while (ReadingStatusTarget) {
+            ConfigFile >> DataBuffer;
+
+            // Search for comment Symbol %
+            if (DataBuffer.compare(0, 1, "%") == 0) {/*Do Nothing*/;}
+
+            else if (DataBuffer.compare(0, 10, "THICKNESS=") == 0) {
+               check_Thickness = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetThickness = atof(DataBuffer.c_str()) * micrometer;
+               m_TargetThickness = atof(DataBuffer.c_str());
+               cout << "Target Thickness: " << m_TargetThickness << endl;
+            }
+
+            else if (DataBuffer.compare(0, 6, "ANGLE=") == 0) {
+               check_Angle = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetAngle = atof(DataBuffer.c_str()) * deg;
+               m_TargetAngle = atof(DataBuffer.c_str());
+               cout << "Target Angle: " << m_TargetAngle << endl;
+            }
+
+            else if (DataBuffer.compare(0, 7, "RADIUS=") == 0) {
+               check_Radius = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetRadius = atof(DataBuffer.c_str()) * mm;
+               m_TargetRadius = atof(DataBuffer.c_str());
+               cout << "Target Radius: " <<  m_TargetRadius << endl;
+            }
+
+            else if (DataBuffer.compare(0, 9, "MATERIAL=") == 0) {
+               check_Material = true ;
+               ConfigFile >> DataBuffer;
+               m_TargetMaterial = DataBuffer;
+               cout << "Target Material: " << m_TargetMaterial << endl;
+            }
+
+            else if (DataBuffer.compare(0, 2, "X=") == 0) {
+               check_X = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetX = atoi(DataBuffer.c_str()) * mm;
+               m_TargetX = atoi(DataBuffer.c_str());
+               cout << "Target Coordinates (mm): ( " << m_TargetX << " ; ";
+            }
+
+            else if (DataBuffer.compare(0, 2, "Y=") == 0) {
+               check_Y = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetY = atoi(DataBuffer.c_str()) * mm;
+               m_TargetY = atoi(DataBuffer.c_str());
+               cout << m_TargetY << " ; ";
+            }
+
+            else if (DataBuffer.compare(0, 2, "Z=") == 0) {
+               check_Z = true ;
+               ConfigFile >> DataBuffer;
+//               m_TargetZ = atoi(DataBuffer.c_str()) * mm;
+               m_TargetZ = atoi(DataBuffer.c_str());
+               cout  << m_TargetZ << " )" << endl;
+            }
+
+            ///////////////////////////////////////////////////
+            // If no Target Token and no comments, toggle out
+            else {
+               ReadingStatusTarget = false; 
+               cout << "WARNING : Wrong Token Sequence: Getting out " << endl;
+            }
+
+            ///////////////////////////////////////////////////
+            // If all Token found toggle out
+            if (check_Thickness && check_Radius && check_Material && check_X && check_Y && check_Z)
+               ReadingStatusTarget = false;
+
+         }
+      }
+
+      //Nothing understandable
+      //else ;
+   }
+
+   ConfigFile.close();
+
+   InitializeRootInput();
+   InitializeRootOutput();
+
+   return;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+void DetectorManager::BuildPhysicalEvent()						
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->BuildPhysicalEvent();
+   }
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void DetectorManager::BuildSimplePhysicalEvent()
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->BuildSimplePhysicalEvent();
+   }
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void DetectorManager::InitializeRootInput()						
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->InitializeRootInput();
+   }
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////	
+void DetectorManager::InitializeRootOutput()	
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->InitializeRootOutput();
+   }   
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void DetectorManager::AddDetector(string DetectorName , VDetector* newDetector)
+{
+   m_Detector[DetectorName] = newDetector;
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void DetectorManager::ClearEventPhysics()
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->ClearEventPhysics();
+   }
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////
+void DetectorManager::ClearEventData()
+{
+   map<string,VDetector*>::iterator it;
+
+   for (it = m_Detector.begin(); it != m_Detector.end(); ++it) {
+      it->second->ClearEventData();
+   }
+}
+			
diff --git a/NPLib/VDetector/DetectorManager.h b/NPLib/VDetector/DetectorManager.h
new file mode 100644
index 0000000000000000000000000000000000000000..8f39b6d50c689eaa20858fa5e119ece0e4c59851
--- /dev/null
+++ b/NPLib/VDetector/DetectorManager.h
@@ -0,0 +1,62 @@
+#ifndef DetectorManager_h
+#define DetectorManager_h
+
+//	NPL
+#include "VDetector.h"
+
+//	STL
+#include <string>
+#include <map>
+
+using namespace std ;
+using namespace NPA ;
+
+// This class manage a map of virtual detector
+namespace NPA
+	{
+		class DetectorManager
+			{
+				public:
+				   DetectorManager();
+				   ~DetectorManager();
+
+				public:
+				   // Read stream at Path and pick-up Token declaration of Detector
+				   void	ReadConfigurationFile(string Path);
+				   void	BuildPhysicalEvent();
+				   void	BuildSimplePhysicalEvent();
+				   void	InitializeRootInput();
+				   void	InitializeRootOutput();
+				   void	AddDetector(string,VDetector*);
+				   void	ClearEventPhysics();
+				   void	ClearEventData();
+
+				public:	
+				   // The map containning all detectors
+				   // Using a Map one can access to any detector using its name
+				   map<string,VDetector*> m_Detector;
+
+				   // Special treatment for the target for the moment
+				   // If necessary we should change it to treat it as 
+				   // a full "detector"
+				private:
+				   double m_TargetThickness;
+				   double m_TargetAngle;
+				   double m_TargetRadius;
+				   string m_TargetMaterial;
+				   double m_TargetX;
+				   double m_TargetY;
+				   double m_TargetZ;
+
+				public:
+				   double GetTargetThickness()     {return m_TargetThickness;}
+				   string GetTargetMaterial()      {return m_TargetMaterial;}
+				   double GetTargetRadius()        {return m_TargetRadius;}
+				   double GetTargetAngle()         {return m_TargetAngle;}
+				   double GetTargetX()             {return m_TargetX;}
+				   double GetTargetY()             {return m_TargetY;}
+				   double GetTargetZ()             {return m_TargetZ;}
+			};
+	}
+
+#endif 
diff --git a/NPLib/VDetector/Makefile b/NPLib/VDetector/Makefile
index 9d3b706c81399fafc17c777d6036acb310fbb3d5..b70479c536a19cbe4e6c0071e8f64331f6a90367 100644
--- a/NPLib/VDetector/Makefile
+++ b/NPLib/VDetector/Makefile
@@ -268,18 +268,23 @@ GLIBS         = $(ROOTGLIBS) $(SYSLIBS)
 INCLUDE		= -I$(CLHEP_BASE_DIR)/include
  
 #------------------------------------------------------------------------------
-SHARELIB      =  libVDetector.so 
+SHARELIB      =  libVDetector.so libDetectorManager.so
 
 all:            $(SHARELIB)
 #------------------------------------------------------------------------------
 ############### Detector ##############
 
-## MUST2 ##
+## VDetector ##
 libVDetector.so:	VDetector.o
-		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@
-		
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@	
+	
+## VDetector ##
+libDetectorManager.so:	DetectorManager.o
+		$(LD) $(SOFLAGS) $^ $(OutPutOpt) $@	
+			
 # dependances
 VDetector.o:		VDetector.cxx	VDetector.h
+DetectorManager.o: DetectorManager.cxx DetectorManager.h
 #######################################
 
 ############# Clean and More ##########
diff --git a/NPLib/VDetector/VDetector.h b/NPLib/VDetector/VDetector.h
index c10a4f39c77954e97c11474a8ed2fba0adefab11..c83f3b7d454a00a1088c00594e94a7fcb44a5ced 100644
--- a/NPLib/VDetector/VDetector.h
+++ b/NPLib/VDetector/VDetector.h
@@ -24,9 +24,8 @@
  *   See MUST2 array for exemple of VDetector derived class                  *
  *                                                                           *
  *****************************************************************************/
-// STL header
+//	STL header
 #include <string>
-
 using namespace std;
 
 namespace NPA 
@@ -38,12 +37,15 @@ namespace NPA
 
 				//	Default Constructor and destructor
 				VDetector()   ;
-				~VDetector()   ;
-
-
+				virtual ~VDetector()   ;
+			
 				//	Read stream at ConfigFile to pick-up parameters of detector (Position,...) using Token
 				virtual void ReadConfiguration(string) 		{}		;
+		
+				//	Add Parameter to the CalibrationManger
+				virtual void AddParameterToCalibrationManager()	{} ;		
 
+				//	XXX To be DUMPED XXX
 				//	Read stream at CalibFile and pick-up calibration parameter using Token
 				//	If argument is "Simulation" no change calibration is loaded
 				virtual void ReadCalibrationFile(string)	{} ;		
@@ -94,6 +96,7 @@ namespace NPA
 				nothing	noCalibration	;
 				
 			*/
+			
 		};
 
 	}
diff --git a/NPLib/liblist b/NPLib/liblist
new file mode 100755
index 0000000000000000000000000000000000000000..d043d2961764c6803724c932167dddfc7c1f2d87
--- /dev/null
+++ b/NPLib/liblist
@@ -0,0 +1,8 @@
+echo  -L$NPLIB/lib -lVDetector -lDetectorManager -lCalibrationManager -lIORoot -lReaction -lEnergyLoss \
+			-lMust2Data -lMust2Physics \
+			-lSSSDData -lSSSDPhysics \
+			-lPlasticData -lPlasticPhysics \
+			-lAnnularS1Data \
+			-lGaspardData -lGaspardPhysics \
+			-lDUMMYDetectorData \
+			-lInitialConditions -lInteractionCoordinates
diff --git a/NPSimulation/GNUmakefile b/NPSimulation/GNUmakefile
index ef3b50375f8063460248194e4042809ab9385514..fb24e6a62bcdcd5af07c6b674298d5e14aad3d2d 100644
--- a/NPSimulation/GNUmakefile
+++ b/NPSimulation/GNUmakefile
@@ -1,6 +1,6 @@
 # $Id: GNUmakefile,v 1.1 1999/01/07 16:05:40 gunter Exp $
 # --------------------------------------------------------------
-# GNUmakefile for examples module.  Gabriele Cosmo, 06/04/98.
+# GNUmakefile based on examples module by Gabriele Cosmo, 06/04/98.
 # --------------------------------------------------------------
 
 name := Simulation
@@ -11,17 +11,15 @@ ifndef G4INSTALL
   G4INSTALL = ../../..
 endif
 
-#G4 work directory is the path where
-#Result of compilation is put
+# G4 work directory is the path where
+# Result of compilation is put in (./$G4WORKDIR/bin/$G4SYSTEM/)
 # to execute your programm : ./$G4WORKDIR/bin/$G4SYSTEM/Simulation xx.reaction xx.detector
 G4WORKDIR = ./
 
 CPPFLAGS += $(shell root-config --cflags) 
 CPPFLAGS += -I$(NPLIB)/include
-EXTRALIBS = $(shell root-config --glibs) 
-EXTRALIBS += -L$(NPLIB)/lib -lMust2Data -lAnnularS1Data -lGaspardData -lPlasticData\
-		-lInitialConditions -lInteractionCoordinates \
-		-lReaction -lIORoot
+EXTRALIBS = $(shell root-config --glibs) -lMathMore
+EXTRALIBS += `$(NPLIB)/liblist`
 .PHONY: all
 all: lib bin
 
diff --git a/NPSimulation/include/AnnularS1.hh b/NPSimulation/include/AnnularS1.hh
index 246b773084913b2e31172291911cebe54dcf82dd..2f5ffb7dd9fa31ac91cd13e32770daa10e164328 100644
--- a/NPSimulation/include/AnnularS1.hh
+++ b/NPSimulation/include/AnnularS1.hh
@@ -9,13 +9,14 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 21/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 11/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define the S1 detector from Micron                            *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *                                                                           *
+ *  + 11/10/09: Change scorer philosophy, one scorer for the detector number *
+ *              added (N. de Sereville)                                      *
  *                                                                           *
  *****************************************************************************/
 
@@ -49,15 +50,13 @@ public:
    ////////////////////////////////////////////////////
 public:
    // By Position Method
-   void AddModule(G4double PosZ,
-                  G4double Rmin,
-                  G4double Rmax);
+   void AddModule(G4double PosZ);
 
    // Effectively construct Volume
    // Avoid to have two time same code for Angle and Point definition
-   void VolumeMaker(G4int TelescopeNumber          ,
-                    G4ThreeVector     MMpos        ,
-                    G4RotationMatrix* MMrot        ,
+   void VolumeMaker(G4int             DetecNumber,
+                    G4ThreeVector     pos,
+                    G4RotationMatrix* rot,
                     G4LogicalVolume*  world);
 
 
@@ -77,6 +76,9 @@ public:
    // Called After DetecorConstruction::AddDetector Method
    void InitializeRootOutput();
 
+   // Initialize all scorers necessary for the detector
+   void InitializeScorers();
+
    // Read sensitive part and fill the Root tree.
    // Called at in the EventAction::EndOfEventAvtion
    void ReadSensitive(const G4Event* event);
@@ -88,21 +90,18 @@ public:
 private:
    TS1Data* m_Event;
 
+
+private:
+   // Scorer
+   G4MultiFunctionalDetector* m_Scorer;
+
+
    ////////////////////////////////////////////////////
    ///////////////Private intern Data//////////////////
    ////////////////////////////////////////////////////
 private:
    // Used for "By Point Definition"
    vector<G4double>	m_PosZ;
-   vector<G4double>	m_Rmin;
-   vector<G4double>	m_Rmax;
-
-   // for debugging purpose
-   G4ThreeVector	MMpos;
-   G4ThreeVector	MMu;
-   G4ThreeVector	MMv;
-   G4ThreeVector	MMw;
-   G4ThreeVector	CT;
 
    // Set to true if you want to see Telescope Frame in your visualisation
    bool			m_non_sensitive_part_visiualisation;
diff --git a/NPSimulation/include/AnnularS1Scorers.hh b/NPSimulation/include/AnnularS1Scorers.hh
index 63e1c7ee6168445048487fe0f00476f088b9480f..c38cdb2fd0ec21eb90bdc58162b3a78b8748bedf 100644
--- a/NPSimulation/include/AnnularS1Scorers.hh
+++ b/NPSimulation/include/AnnularS1Scorers.hh
@@ -26,59 +26,10 @@
 #include "G4THitsMap.hh"
 
 
-class AnnularS1ScorerEnergy : public G4VPrimitiveScorer
-{
-
-public: // with description
-   AnnularS1ScorerEnergy(G4String name, G4int depth = 0);
-   virtual ~AnnularS1ScorerEnergy();
-
-protected: // with description
-   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-public:
-   virtual void Initialize(G4HCofThisEvent*);
-   virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void clear();
-   virtual void DrawAll();
-   virtual void PrintAll();
-
-private:
-   G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
-};
-
-
-
-class AnnularS1ScorerTime : public G4VPrimitiveScorer
-{
-
-public: // with description
-   AnnularS1ScorerTime(G4String name, G4int depth = 0);
-   virtual ~AnnularS1ScorerTime();
-
-protected: // with description
-   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-public:
-   virtual void Initialize(G4HCofThisEvent*);
-   virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void clear();
-   virtual void DrawAll();
-   virtual void PrintAll();
-
-private:
-   G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
-};
-
-
-
 class AnnularS1ScorerThetaStripNumber : public G4VPrimitiveScorer
 {
-
 public: // with description
-   AnnularS1ScorerThetaStripNumber(G4String name, G4int depth = 0, G4double StripPlaneSize = 98, G4int NumberOfStrip = 128);
+   AnnularS1ScorerThetaStripNumber(G4String name, G4int depth = 0);
    virtual ~AnnularS1ScorerThetaStripNumber();
 
 protected: // with description
@@ -102,9 +53,8 @@ private:
 
 class AnnularS1ScorerPhiStripNumber : public G4VPrimitiveScorer
 {
-
 public: // with description
-   AnnularS1ScorerPhiStripNumber(G4String name, G4int depth = 0, G4double StripPlaneSize = 98, G4int NumberOfStrip = 128);
+   AnnularS1ScorerPhiStripNumber(G4String name, G4int depth = 0);
    virtual ~AnnularS1ScorerPhiStripNumber();
 
 protected: // with description
diff --git a/NPSimulation/include/DetectorConstruction.hh b/NPSimulation/include/DetectorConstruction.hh
index 6fb3c6ef427101a1fddf8dcefcb38dcf6817570b..8a65ee3abfe055a6a3f392dbd1ef0de6398a9219 100644
--- a/NPSimulation/include/DetectorConstruction.hh
+++ b/NPSimulation/include/DetectorConstruction.hh
@@ -15,9 +15,9 @@
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This Class manage the virtual detector and call their method.            *
- *	Every time a new detector is added to the project, a few line in the     *
- *	ReadConfigurationFile method are needed in order to detect the associate *
- *	token.                                                                   *
+ *  Every time a new detector is added to the project, a few line in the     *
+ *  ReadConfigurationFile method are needed in order to detect the associate *
+ *  token.                                                                   *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
  *                                                                           *
@@ -26,63 +26,53 @@
 class G4LogicalVolume;
 class G4VPhysicalVolume;
 
+// C++ headers
+#include <vector>
+#include <cmath>
+
+// G4 headers
 #include "G4VUserDetectorConstruction.hh"
+#include "G4Event.hh"
+
+// NPTool headers
 #include "VDetector.hh"
+#include "Target.hh"
+
+// ROOT headers
 #include "TTree.h"
-#include "G4Event.hh"
-#include <vector>
 
 class DetectorConstruction : public G4VUserDetectorConstruction
 {
 public:
-
    DetectorConstruction();
    virtual ~DetectorConstruction();
 
    G4VPhysicalVolume* Construct();
    G4LogicalVolume* GetWorldLogic();
 
-public:
 
+public:
    void ReadConfigurationFile(string);
    void AddDetector(VDetector*);
    void ReadAllSensitive(const G4Event*);
 
-private:
 
+private:
    // Logical volumes
-   G4LogicalVolume* world_log      ;
+   G4LogicalVolume* world_log;
 
    // Physical volumes
-   G4VPhysicalVolume* world_phys   ;
+   G4VPhysicalVolume* world_phys;
 
    // Virtual Detector Vector
-   vector<VDetector*> m_Detectors   ;
+   vector<VDetector*> m_Detectors;
 
 
 private: // Data about the target
-   G4double m_TargetThickness ;
-   G4double m_TargetRadius    ;
-   G4double m_TargetX         ;
-   G4double m_TargetY         ;
-   G4double m_TargetZ         ;
+   Target*  m_Target;
 
 public:  // Getter and Setter
-   G4double GetTargetThickness() {
-      return m_TargetThickness   ;
-   }
-   G4double GetTargetRadius()    {
-      return m_TargetRadius      ;
-   }
-   G4double GetTargetX()         {
-      return m_TargetX        ;
-   }
-   G4double GetTargetY()         {
-      return m_TargetY        ;
-   }
-   G4double GetTargetZ()         {
-      return m_TargetZ        ;
-   }
+   Target*  GetTarget()		{return m_Target;}
 };
 
 #endif
diff --git a/NPSimulation/include/DummyDetector.hh b/NPSimulation/include/DummyDetector.hh
new file mode 100755
index 0000000000000000000000000000000000000000..700cec3a1a6302d36d641aa99178eb9d128f8f49
--- /dev/null
+++ b/NPSimulation/include/DummyDetector.hh
@@ -0,0 +1,128 @@
+#ifndef DUMMYDetector_h
+#define DUMMYDetector_h 1
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe a simple Dummy Detector :                            *
+ *	a simple cylinder of predifined material. user can choose to place it    *
+ *  where he want using spherical coordinate and choose between two naterial *
+ *	                                                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *  This detector respect all the NPTool convention in naming volume,        * 
+ *  reading scorers and file. Use it as a basis for your own detector        *
+ *****************************************************************************/
+// C++ header
+#include <string>
+#include <vector>
+
+// G4 header defining G4 types
+#include "globals.hh"
+
+// G4 headers
+#include "G4ThreeVector.hh"
+#include "G4RotationMatrix.hh"
+#include "G4LogicalVolume.hh"
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+// NPTool header
+#include "VDetector.hh"
+#include "TDUMMYDetectorData.h"
+
+using namespace std;
+
+class DUMMYDetector : public VDetector
+{
+   ////////////////////////////////////////////////////
+   /////// Default Constructor and Destructor /////////
+   ////////////////////////////////////////////////////
+public:
+   DUMMYDetector() ;
+   virtual ~DUMMYDetector() ;
+
+   ////////////////////////////////////////////////////
+   //////// Specific Function of this Class ///////////
+   ////////////////////////////////////////////////////
+public:
+   // By Angle Method
+   void AddDUMMYDetector(	 G4double    R        							,
+        									 G4double    Theta    							,
+         									 G4double    Phi         						,
+						         			 G4double	 DUMMYDetectorThickness		,
+						         			 G4double	 DUMMYDetectorRadius			,
+						         			 G4String 	Scintillator						 );  
+		
+	void VolumeMaker(G4ThreeVector Det_pos, int DetNumber,G4LogicalVolume* world) ;
+   ////////////////////////////////////////////////////
+   /////////  Inherite from VDetector class ///////////
+   ////////////////////////////////////////////////////
+public:
+   // Read stream at Configfile to pick-up parameters of detector (Position,...)
+   // Called in DetecorConstruction::ReadDetextorConfiguration Method
+   void ReadConfiguration(string Path)          ;
+
+   // Construct detector and inialise sensitive part.
+   // Called After DetecorConstruction::AddDetector Method
+   void ConstructDetector(G4LogicalVolume* world)  ;
+
+   // Add Detector branch to the EventTree.
+   // Called After DetecorConstruction::AddDetector Method
+   void InitializeRootOutput()            ;
+
+   // Read sensitive part and fill the Root tree.
+   // Called at in the EventAction::EndOfEventAvtion
+   void ReadSensitive(const G4Event* event)     ;
+
+public: // Material 
+	void InitializeMaterial() 		;
+	// The dummy materials
+	G4Material* m_MaterialDUMMYDetector_material1		; //the dummy material 2
+	G4Material* m_MaterialDUMMYDetector_material2		; //the dummy material 2
+
+	
+public:	//	Scorer
+	//	Initialize all Scorer used by the MUST2Array
+	void InitializeScorers() ;
+
+	//	Silicon Associate Scorer
+	G4MultiFunctionalDetector* m_DUMMYDetectorScorer				 ;
+
+
+   ////////////////////////////////////////////////////
+   ///////////Event class to store Data////////////////
+   ////////////////////////////////////////////////////
+private:
+   TDUMMYDetectorData* m_Event ;
+
+   ////////////////////////////////////////////////////
+   ///////////////Private intern Data//////////////////
+   ////////////////////////////////////////////////////
+private:
+   
+   vector<double>		m_DUMMYDetectorThickness	;
+   vector<double>		m_DUMMYDetectorRadius		;
+      
+   // Used for "By Angle Definition"
+   vector<G4double>  m_R         ; //  |
+   vector<G4double>  m_Theta     ; //  > Spherical coordinate DUMMYDetector volume center
+   vector<G4double>  m_Phi    	 ; //  |
+
+	//	Scintillator type
+	vector<G4String> m_Scintillator ;
+
+
+};
+#endif
diff --git a/NPSimulation/include/EventGeneratorBeam.hh b/NPSimulation/include/EventGeneratorBeam.hh
index 0576110dfa2dcecf8de5e96a686ee6afac5215ce..ed5de49b6ff184d4ec702a3442c7bda4e0d9fe09 100644
--- a/NPSimulation/include/EventGeneratorBeam.hh
+++ b/NPSimulation/include/EventGeneratorBeam.hh
@@ -32,50 +32,39 @@
 // NPTool header
 #include "VEventGenerator.hh"
 #include "TInitialConditions.h"
+#include "Target.hh"
 
 using namespace std  ;
 
-
-
 class EventGeneratorBeam : public VEventGenerator
 {
-	public:     // Constructor and destructor
-	   EventGeneratorBeam()   ;
-	   virtual ~EventGeneratorBeam()   ;
+public:     // Constructor and destructor
+   EventGeneratorBeam();
+   virtual ~EventGeneratorBeam();
+
+
+public:     // Inherit from VEventGenerator Class
+   void ReadConfiguration(string);
+   void GenerateEvent(G4Event*, G4ParticleGun*);
+   void InitializeRootOutput();
+
+   void SetTarget(Target* Target) ;
+
+
+private: // TTree to store initial value of beam and reaction
+   TInitialConditions*	m_InitConditions;
 
-	public:     // Inherit from VEventGenerator Class
-	   void  ReadConfiguration(string)           ;
-	   void  GenerateEvent(G4Event*, G4ParticleGun*) ;
-	   void  InitializeRootOutput()  ;
-	   void  SetTargetThickness(double TargetThickness)            {
-	      m_TargetThickness = TargetThickness     ;
-	   }
-	   void  SetTargetRadius(double TargetRadius)               {
-	      m_TargetRadius    = TargetRadius        ;
-	   }
-	   void  SetTargetCoordinate(G4double X, G4double Y, G4double Z)  {
-	      m_TargetX = X ;
-	      m_TargetY = Y ;
-	      m_TargetZ = Z ;
-	   }
-		
-		private: // TTree to store initial value of beam and reaction
-		   TInitialConditions*	m_InitConditions;
 		   
-	private: // Source parameter
-	   G4ParticleDefinition*   m_particle        ;  // Kind of particle to shoot
-	   G4double             m_BeamEnergy      ;
-	   G4double             m_BeamEnergySpread   ;
-	   G4double             m_SigmaX       ;
-	   G4double             m_SigmaY       ;
-	   G4double             m_SigmaThetaX     ;
-	   G4double				m_SigmaPhiY		;
+private: // Source parameter
+   G4ParticleDefinition*	m_particle;  // Kind of particle to shoot
+   G4double			m_BeamEnergy;
+   G4double			m_BeamEnergySpread;
+   G4double			m_SigmaX;
+   G4double			m_SigmaY;
+   G4double			m_SigmaThetaX;
+   G4double			m_SigmaPhiY;
 
-	private: // Target Value
-	   G4double             m_TargetThickness ;
-	   G4double             m_TargetRadius    ;
-	   G4double             m_TargetX         ;
-	   G4double          m_TargetY         ;
-	   G4double          m_TargetZ         ;
+private: // Target Value
+   Target* m_Target;
 };
 #endif
diff --git a/NPSimulation/include/EventGeneratorTransfert.hh b/NPSimulation/include/EventGeneratorTransfert.hh
index 09c3229bcd19f77956f9380ee79a085559c3d73d..8c570880d17397018574fe2784c2d97d24adc9a5 100644
--- a/NPSimulation/include/EventGeneratorTransfert.hh
+++ b/NPSimulation/include/EventGeneratorTransfert.hh
@@ -28,6 +28,7 @@
 
 // NPSimulation
 #include "VEventGenerator.hh"
+#include "Target.hh"
 
 // NPLib
 #include "TInitialConditions.h"
@@ -40,93 +41,81 @@ using namespace NPL ;
 
 
 class EventGeneratorTransfert : public VEventGenerator
-	{
-
-		public:     // Constructors and Destructors
-		   // Default constructor used to allocate memory
-		   EventGeneratorTransfert();
-
-		   // This is the constructor to be used
-		   EventGeneratorTransfert(string name1             ,        // Beam nuclei
-		             string name2             ,        // Target nuclei
-		             string name3             ,        // Product of reaction
-		             string name4             ,        // Product of reaction
-		             double BeamEnergy        ,        // Beam Energy
-		             double ExcitationEnergy  ,        // Excitation of Heavy Nuclei
-		             double BeamEnergySpread  ,
-		             double SigmaX         ,
-		             double SigmaY         ,
-		             double SigmaThetaX       ,
-		             double SigmaPhiY  ,
-		             bool   ShootLight        ,
-		             bool   ShootHeavy        ,
-		             string Path);                     // Path of the differentiel Cross Section
-
-		   // Default Destructor
-		   virtual ~EventGeneratorTransfert();
-
-
-		public:     // Inherit from VEventGenerator class
-		   void        ReadConfiguration(string)              ;
-		   void        GenerateEvent(G4Event*, G4ParticleGun*)       ;
-
-		   void        SetTargetCoordinate(G4double X, G4double Y, G4double Z) {
-																			      m_TargetX = X;
-																			      m_TargetY = Y;
-																			      m_TargetZ = Z;
-																			   }
-
-		   void        SetTargetThickness(double TargetThickness) {
-																      m_TargetThickness = TargetThickness ;
-																   }
-
-		   void        SetTargetRadius(double TargetRadius) {
-															   m_TargetRadius    = TargetRadius    ;
-															}
-
-		private: // Particle Shoot Option
-		   bool        m_ShootLight   ;
-		   bool        m_ShootHeavy   ;
-
-		private: // TTree to store initial value of beam and reaction
-		   TInitialConditions*	m_InitConditions;
-
-		private: // Beam Parameter
-		   double         m_BeamEnergy ;
-		   double         m_BeamEnergySpread ;
-		   double         m_SigmaX        ;
-		   double         m_SigmaY        ;
-		   double         m_SigmaThetaX      ;
-		   double         m_SigmaPhiY      ;
-
-		private: // Target Parameter
-		   double         m_TargetThickness ;
-		   double         m_TargetRadius    ;
-		   double         m_TargetX         ;
-		   double         m_TargetY         ;
-		   double         m_TargetZ         ;
-
-		private: // Reaction and CrossSection Shoot
-			Reaction*	m_Reaction			;
-		
-	   //Other
-	   void     Print() const  ;
-	   void            InitializeRootOutput();
-
-	   void     SetEverything(string name1             ,        // Beam nuclei
-		             string name2             ,        // Target nuclei
-		             string name3             ,        // Product of reaction
-		             string name4             ,        // Product of reaction
-		             double BeamEnergy        ,        // Beam Energy
-		             double ExcitationEnergy  ,        // Excitation of Heavy Nuclei
-		             double BeamEnergySpread  ,
-		             double SigmaX         ,
-		             double SigmaY         ,
-		             double SigmaThetaX       ,
-		             double SigmaPhiY  ,
-		             bool   ShootLight        ,
-		             bool   ShootHeavy        ,
-		             string Path);                     // Path of the differentiel Cross Section
+{
+public:     // Constructors and Destructors
+   // Default constructor used to allocate memory
+   EventGeneratorTransfert();
+
+   // This is the constructor to be used
+   EventGeneratorTransfert(string name1             ,        // Beam nuclei
+                           string name2             ,        // Target nuclei
+                           string name3             ,        // Product of reaction
+                           string name4             ,        // Product of reaction
+                           double BeamEnergy        ,        // Beam Energy
+                           double ExcitationEnergy  ,        // Excitation of Heavy Nuclei
+                           double BeamEnergySpread  ,
+                           double SigmaX            ,
+                           double SigmaY            ,
+                           double SigmaThetaX       ,
+                           double SigmaPhiY         ,
+                           bool   ShootLight        ,
+                           bool   ShootHeavy        ,
+                           string Path);                     // Path of the differentiel Cross Section
+
+   // Default Destructor
+   virtual ~EventGeneratorTransfert();
+
+
+public: // Inherit from VEventGenerator class
+   void        ReadConfiguration(string);
+   void        GenerateEvent(G4Event*, G4ParticleGun*);
+   void	       SetTarget(Target* Target) ;
+
+
+private: // Particle Shoot Option
+   bool        m_ShootLight;
+   bool        m_ShootHeavy;
+
+
+private: // Target Parameter
+   Target*     m_Target;
+
+
+private: // Reaction and CrossSection Shoot
+   Reaction*   m_Reaction;
+
+
+private: // Beam Parameters
+   double      m_BeamEnergy;
+   double      m_BeamEnergySpread;
+   double      m_SigmaX;
+   double      m_SigmaY;
+   double      m_SigmaThetaX;
+   double      m_SigmaPhiY;
+
+
+private: // TTree to store initial value of beam and reaction
+   TInitialConditions*	m_InitConditions;
+
+
+   // Other methods
+   void        Print() const;
+   void        InitializeRootOutput();
+
+   void        SetEverything(string name1             ,        // Beam nuclei
+	                     string name2             ,        // Target nuclei
+	                     string name3             ,        // Product of reaction
+	                     string name4             ,        // Product of reaction
+	                     double BeamEnergy        ,        // Beam Energy
+	                     double ExcitationEnergy  ,        // Excitation of Heavy Nuclei
+	                     double BeamEnergySpread  ,
+	                     double SigmaX            ,
+	                     double SigmaY            ,
+	                     double SigmaThetaX       ,
+	                     double SigmaPhiY         ,
+	                     bool   ShootLight        ,
+	                     bool   ShootHeavy        ,
+	                     string Path);                     // Path of the differentiel Cross Section
 };
 
 #endif
diff --git a/NPSimulation/include/EventGeneratorTransfertToResonance.hh b/NPSimulation/include/EventGeneratorTransfertToResonance.hh
index 51d85928d08111b82ffe676a71627b174f210a7d..2a5f1c30f8c822ffae01140825a6fbd6c346b0fe 100644
--- a/NPSimulation/include/EventGeneratorTransfertToResonance.hh
+++ b/NPSimulation/include/EventGeneratorTransfertToResonance.hh
@@ -16,11 +16,11 @@
  * Decription:                                                               *
  *  This event Generator is used to simulated two body TransfertReaction.    *
  *  A Phase Space calculation is then performed to decay the Heavy product.  *
- *	The TGenPhaseSpace from ROOT is used to calculate a phase space decay    *
- *	with flat distribution	                                                 *
+ *  The TGenPhaseSpace from ROOT is used to calculate a phase space decay    *
+ *  with flat distribution	                                             *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *   									                                     *
+ *   					                                     *
  *                                                                           *
  *****************************************************************************/
 // C++ header
@@ -28,6 +28,7 @@
 
 // NPSimulation
 #include "VEventGenerator.hh"
+#include "Target.hh"
 
 // NPLib
 #include "TInitialConditions.h"
@@ -73,20 +74,7 @@ class EventGeneratorTransfertToResonance : public VEventGenerator
 	public:     // Inherit from VEventGenerator class
 	   void        ReadConfiguration(string)              ;
 	   void        GenerateEvent(G4Event*, G4ParticleGun*)       ;
-
-	   void        SetTargetCoordinate(G4double X, G4double Y, G4double Z) {
-	      m_TargetX = X;
-	      m_TargetY = Y;
-	      m_TargetZ = Z;
-	   }
-
-	   void        SetTargetThickness(double TargetThickness) {
-	      m_TargetThickness = TargetThickness ;
-	   }
-
-	   void        SetTargetRadius(double TargetRadius) {
-	      m_TargetRadius    = TargetRadius    ;
-	   }
+	   void        SetTarget(Target* Target);
 
 	private: // Particle Shoot Option
 	   bool        m_ShootLight         ;
@@ -105,11 +93,7 @@ class EventGeneratorTransfertToResonance : public VEventGenerator
 	   double         m_SigmaPhiY        ;
 
 	private: // Target Parameter
-	   double         m_TargetThickness    ;
-	   double         m_TargetRadius       ;
-	   double         m_TargetX            ;
-	   double         m_TargetY            ;
-	   double         m_TargetZ            ;
+    	Target*        m_Target;
 
 	private: // Reaction
 		Reaction*	m_Reaction				;
@@ -132,10 +116,6 @@ class EventGeneratorTransfertToResonance : public VEventGenerator
 						        G4Event* anEvent        ,
 						        G4ParticleGun* particleGun);
 
-		//	This method return a random Vector of dimension N and magnitude R
-		//  The return distribution populate uniformely the surface of the N-Sphere of radius R  
-		vector<double>	PhaseSpaceUniformGenerator( int N , double R);
-
 	   void     SetEverything(string    name1          ,         //Beam nuclei
 		         string   name2          ,        //Target nuclei
 		         string   name3          ,        //Product of reaction
diff --git a/NPSimulation/include/GaspardScorers.hh b/NPSimulation/include/GaspardScorers.hh
index 28ddab1aca3d413237af5a58e331c06959496054..e009528060643ba63a34595355439f353ea93703 100644
--- a/NPSimulation/include/GaspardScorers.hh
+++ b/NPSimulation/include/GaspardScorers.hh
@@ -31,7 +31,7 @@ namespace GPDSCORERS
 class GPDScorerFirstStageEnergy : public G4VPrimitiveScorer
 {
 public: // with description
-   GPDScorerFirstStageEnergy(G4String name, G4int depth = 0);
+   GPDScorerFirstStageEnergy(G4String name, G4String volumeName, G4int depth = 0);
    virtual ~GPDScorerFirstStageEnergy();
 
 protected: // with description
@@ -45,6 +45,7 @@ public:
    virtual void PrintAll();
 
 private:
+   G4String m_VolumeName;
    G4int HCID;
    G4THitsMap<G4double>* EvtMap;
 };
@@ -54,7 +55,7 @@ private:
 class GPDScorerSecondStageEnergy : public G4VPrimitiveScorer
 {
 public: // with description
-   GPDScorerSecondStageEnergy(G4String name, G4int depth = 0);
+   GPDScorerSecondStageEnergy(G4String name, G4String volumeName, G4int depth = 0);
    virtual ~GPDScorerSecondStageEnergy();
 
 protected: // with description
@@ -68,6 +69,7 @@ public:
    virtual void PrintAll();
 
 private:
+   G4String m_VolumeName;
    G4int HCID;
    G4THitsMap<G4double>* EvtMap;
 };
@@ -77,7 +79,7 @@ private:
 class GPDScorerThirdStageEnergy : public G4VPrimitiveScorer
 {
 public: // with description
-   GPDScorerThirdStageEnergy(G4String name, G4int depth = 0);
+   GPDScorerThirdStageEnergy(G4String name, G4String volumeName, G4int depth = 0);
    virtual ~GPDScorerThirdStageEnergy();
 
 protected: // with description
@@ -91,35 +93,13 @@ public:
    virtual void PrintAll();
 
 private:
+   G4String m_VolumeName;
    G4int HCID;
    G4THitsMap<G4double>* EvtMap;
 };
 
 
 
-class GPDScorerDetectorNumber : public G4VPrimitiveScorer
-{
-public: // with description
-   GPDScorerDetectorNumber(G4String name, G4int depth = 0 , G4String VolumeName = "xxx");
-   virtual ~GPDScorerDetectorNumber();
-
-protected: // with description
-   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-public:
-   virtual void Initialize(G4HCofThisEvent*);
-   virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void Clear();
-   virtual void DrawAll();
-   virtual void PrintAll();
-
-private:
-   G4int HCID;
-   G4THitsMap<G4int>* EvtMap;
-   G4String m_VolumeName ;
-};
-
-
 
 class GPDScorerFirstStageFrontStripDummyShape : public G4VPrimitiveScorer
 {
diff --git a/NPSimulation/include/GaspardTrackerAnnular.hh b/NPSimulation/include/GaspardTrackerAnnular.hh
index a43a7bf45b0ebc331931a509f5d5449b8b31a833..0437e4bad965c6ca04d1738e511046f5594fa643 100644
--- a/NPSimulation/include/GaspardTrackerAnnular.hh
+++ b/NPSimulation/include/GaspardTrackerAnnular.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define INDEX	200
 
 
 class GaspardTrackerAnnular : public GaspardTrackerModule
diff --git a/NPSimulation/include/GaspardTrackerDummyShape.hh b/NPSimulation/include/GaspardTrackerDummyShape.hh
index d567d9c1e65e66762dacc876069b1c2de6c16f0b..79e282b2e75fa9c6a430b08a2045ea043dacf4a8 100644
--- a/NPSimulation/include/GaspardTrackerDummyShape.hh
+++ b/NPSimulation/include/GaspardTrackerDummyShape.hh
@@ -33,7 +33,6 @@
 
 using namespace std;
 
-#define	INDEX	1000
 
 
 class GaspardTrackerDummyShape : public GaspardTrackerModule
@@ -142,30 +141,28 @@ private:
 namespace GPDDUMMYSHAPE
 {
    // Resolution
-//   const G4double ResoFirstStage  = 0              ;// = 52keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoFirstStage  = 0.022          ;// = 52keV of Resolution   //   Unit is MeV/2.35
-   const G4double ResoSecondStage = 0          ;// = 130 keV of resolution //   Unit is MeV/2.35
-//   const G4double ResoSecondStage = 0.055          ;// = 130 keV of resolution //   Unit is MeV/2.35
-   const G4double ResoThirdStage  = 0              ;// = 100 keV of resolution //   Unit is MeV/2.35
-//   const G4double ResoThirdStage  = 0.043          ;// = 100 kev of resolution //   Unit is MeV/2.35
-   const G4double ResoTimeGpd     = 0.212765957    ;// = 500ps                 //   Unit is  ns/2.35
+//   const G4double ResoFirstStage  = 0;	// = 50 keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoFirstStage  = 0.0213;	// = 50 keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoSecondStage = 0.0213;	// = 50 keV of resolution //   Unit is MeV/2.35
+   const G4double ResoThirdStage  = 0.0213;	// = 50 keV of resolution //   Unit is MeV/2.35
+   const G4double ResoTimeGpd     = 0.212765957;// = 500ps                 //   Unit is  ns/2.35
 
    // Geometry for the mother volume containing the different layers of your dummy shape module
    const G4double FaceFront          = 5.1*cm;
    const G4double FaceBack           = 5.1*cm;
-//   const G4double Length             = 1.5*cm;
-//   const G4double InterStageDistance = 5*mm;
+   const G4double Length             = 1.5*cm;
+   const G4double InterStageDistance = 5*mm;
    // for testing the excitation energy reconstruction
-   const G4double Length             = 4*cm;
-   const G4double InterStageDistance = 15*mm;
+//   const G4double Length             = 4*cm;
+//   const G4double InterStageDistance = 15*mm;
 
    // First stage
    const G4double FirstStageFace       = 5.0*cm;
-//   const G4double FirstStageThickness  = 300*micrometer ;
+   const G4double FirstStageThickness  = 300*micrometer;
+//   const G4double FirstStageThickness  = 2*mm;
    // for testing the excitation energy reconstruction
-   const G4double FirstStageThickness  = 1.3*cm;
-//   const G4int NumberOfStrips	       = 128;
-   const G4int NumberOfStrips	       = 20;
+//   const G4double FirstStageThickness  = 1.3*cm;
+   const G4int NumberOfStrips	       = 25; // 2mm strip pitch
 
    // Second stage
    const G4double SecondStageFace      = FirstStageFace;
diff --git a/NPSimulation/include/GaspardTrackerModule.hh b/NPSimulation/include/GaspardTrackerModule.hh
index 92ee9483fbecec4a5c07e21eab4874bb07d636c1..0281068851aaeece058d182987dbb7edebf66a97 100644
--- a/NPSimulation/include/GaspardTrackerModule.hh
+++ b/NPSimulation/include/GaspardTrackerModule.hh
@@ -24,6 +24,7 @@
 
 // C++ headers
 #include <string>
+#include <vector>
 
 // G4 headers
 #include "G4LogicalVolume.hh"
@@ -66,6 +67,9 @@ public:
    virtual void SetInterCoordPointer(TInteractionCoordinates* interCoord) = 0;
    virtual TInteractionCoordinates* GetInterCoordPointer() = 0;
 
+   // Initialize the Index map for the different modules of Gaspard
+   void InitializeIndex();
+
 public:
    TGaspardTrackerData*		GetEventPointer() 	{return ms_Event;};
 
@@ -90,6 +94,9 @@ protected:
 
    // Third stage Associate Scorer 
    G4MultiFunctionalDetector* m_ThirdStageScorer;
+
+protected:
+   map<string, int> m_index;
 };
 
 #endif
diff --git a/NPSimulation/include/GaspardTrackerSquare.hh b/NPSimulation/include/GaspardTrackerSquare.hh
index 841a605c9aeaddbe94ba5a8a49e9fcc27f7c1c28..180b0d1b125923308a2a618e0db785290f8ca763 100644
--- a/NPSimulation/include/GaspardTrackerSquare.hh
+++ b/NPSimulation/include/GaspardTrackerSquare.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define	INDEX	0
 
 
 class GaspardTrackerSquare : public GaspardTrackerModule
diff --git a/NPSimulation/include/GaspardTrackerTrapezoid.hh b/NPSimulation/include/GaspardTrackerTrapezoid.hh
index 2b86902e39d58c4166cdee2a3f0579fecd79b82d..c7224df3b91d120b7e23ea7bfbcb0c737b080bff 100644
--- a/NPSimulation/include/GaspardTrackerTrapezoid.hh
+++ b/NPSimulation/include/GaspardTrackerTrapezoid.hh
@@ -31,7 +31,6 @@
 
 using namespace std;
 
-#define	INDEX	100
 
 
 class GaspardTrackerTrapezoid : public GaspardTrackerModule
diff --git a/NPSimulation/include/GeneralScorers.hh b/NPSimulation/include/GeneralScorers.hh
index 1591fbab1b1e76036b5dc39acbb7d2b20c1ddc40..70dcc65e51c9bfd69172aa7eb0e40f22a49492f0 100644
--- a/NPSimulation/include/GeneralScorers.hh
+++ b/NPSimulation/include/GeneralScorers.hh
@@ -27,183 +27,217 @@
 #include "G4VPrimitiveScorer.hh"
 #include "G4THitsMap.hh"
 
-class PSEnergy : public G4VPrimitiveScorer
+namespace GENERALSCORERS
 	{
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			//	This Threshold is used in the above scorer. Any energy deposit under this threshold will not create an entry.
+			const double TriggerThreshold = 100*keV ;
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			//	The following function is used in many scorer. following the Detector Volume Nomenclature
+			//	DetectorNameX_SubPart_SubPart
+			//  where X stand for the detector number.
+
+			int PickUpDetectorNumber(G4Step* aStep, std::string DetName);
+
+
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSDetectorNumber : public G4VPrimitiveScorer
+				{
+
+				public: // with description
+				   PSDetectorNumber(G4String name, G4String VolumeName = "xxx", G4int depth = 0 );
+				   virtual ~PSDetectorNumber();
+
+				protected: // with description
+				   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+				public:
+				   virtual void Initialize(G4HCofThisEvent*);
+				   virtual void EndOfEvent(G4HCofThisEvent*);
+				   virtual void clear();
+				   virtual void DrawAll();
+				   virtual void PrintAll();
+
+				private:
+					 G4String m_VolumeName; 
+				   G4int HCID;
+				   G4THitsMap<G4int>* EvtMap;
+				   
+				};
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......			
+			class PSEnergy : public G4VPrimitiveScorer
+					{
+
+						public: // with description
+						   PSEnergy(G4String name, G4String VolumeName, G4int depth);
+						   virtual ~PSEnergy();
+
+						protected: // with description
+						   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+						public:
+						   virtual void Initialize(G4HCofThisEvent*);
+						   virtual void EndOfEvent(G4HCofThisEvent*);
+						   virtual void clear();
+						   virtual void DrawAll();
+						   virtual void PrintAll();
+
+						private:
+								G4String m_VolumeName;
+						   G4int HCID;
+						   G4THitsMap<G4double>* EvtMap;
+					};
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSTOF : public G4VPrimitiveScorer
+					{
+
+						public: // with description
+						   PSTOF(G4String name, G4String VolumeName, G4int depth);
+						   virtual ~PSTOF();
+
+						protected: // with description
+						   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+						public:
+						   virtual void Initialize(G4HCofThisEvent*);
+						   virtual void EndOfEvent(G4HCofThisEvent*);
+						   virtual void clear();
+						   virtual void DrawAll();
+						   virtual void PrintAll();
+
+						private:
+								G4String m_VolumeName;
+						   	G4int HCID;
+						   	G4THitsMap<G4double>* EvtMap;
+					};
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSInteractionCoordinatesX : public G4VPrimitiveScorer
+				{
+				public: // with description
+				   PSInteractionCoordinatesX(G4String name, G4String VolumeName, G4int depth);
+				   virtual ~PSInteractionCoordinatesX();
+
+				protected: // with description
+				   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+				public:
+				   virtual void Initialize(G4HCofThisEvent*);
+				   virtual void EndOfEvent(G4HCofThisEvent*);
+				   virtual void clear();
+				   virtual void DrawAll();
+				   virtual void PrintAll();
+
+				private:
+						G4String m_VolumeName;
+				   G4int HCID;
+				   G4THitsMap<G4double>* EvtMap;
+				};
+
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSInteractionCoordinatesY : public G4VPrimitiveScorer
+				{
+				public: // with description
+				   PSInteractionCoordinatesY(G4String name, G4String VolumeName, G4int depth);
+				   virtual ~PSInteractionCoordinatesY();
+
+				protected: // with description
+				   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+				public:
+				   virtual void Initialize(G4HCofThisEvent*);
+				   virtual void EndOfEvent(G4HCofThisEvent*);
+				   virtual void clear();
+				   virtual void DrawAll();
+				   virtual void PrintAll();
+
+				private:
+						G4String m_VolumeName;
+				   G4int HCID;
+				   G4THitsMap<G4double>* EvtMap;
+				};
+
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSInteractionCoordinatesZ : public G4VPrimitiveScorer
+				{
+				public: // with description
+				   PSInteractionCoordinatesZ(G4String name, G4String VolumeName, G4int depth);
+				   virtual ~PSInteractionCoordinatesZ();
+
+				protected: // with description
+				   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+				public:
+				   virtual void Initialize(G4HCofThisEvent*);
+				   virtual void EndOfEvent(G4HCofThisEvent*);
+				   virtual void clear();
+				   virtual void DrawAll();
+				   virtual void PrintAll();
+
+				private:
+						G4String m_VolumeName;
+				   G4int HCID;
+				   G4THitsMap<G4double>* EvtMap;
+				};
+
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSInteractionCoordinatesAngleTheta : public G4VPrimitiveScorer
+				{
+					public: // with description
+					   PSInteractionCoordinatesAngleTheta(G4String name, G4String VolumeName, G4int depth);
+					   virtual ~PSInteractionCoordinatesAngleTheta();
+
+					protected: // with description
+					   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+					public:
+					   virtual void Initialize(G4HCofThisEvent*);
+					   virtual void EndOfEvent(G4HCofThisEvent*);
+					   virtual void clear();
+					   virtual void DrawAll();
+					   virtual void PrintAll();
+
+					private:
+								G4String m_VolumeName;
+					   G4int HCID;
+					   G4THitsMap<G4double>* EvtMap;
+				};
+
+
+			//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+			class PSInteractionCoordinatesAnglePhi : public G4VPrimitiveScorer
+				{
+					public: // with description
+					   PSInteractionCoordinatesAnglePhi(G4String name, G4String VolumeName, G4int depth);
+					   virtual ~PSInteractionCoordinatesAnglePhi();
+
+					protected: // with description
+					   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
+
+					public:
+					   virtual void Initialize(G4HCofThisEvent*);
+					   virtual void EndOfEvent(G4HCofThisEvent*);
+					   virtual void clear();
+					   virtual void DrawAll();
+					   virtual void PrintAll();
+
+					private:
+						 G4String m_VolumeName;
+					   G4int HCID;
+					   G4THitsMap<G4double>* EvtMap;
+				};
+
+			
+
+	}
 
-	public: // with description
-	   PSEnergy(G4String name, G4int depth = 0);
-	   virtual ~PSEnergy();
 
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
 
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
-
-class PSTOF : public G4VPrimitiveScorer
-{
-
-	public: // with description
-	   PSTOF(G4String name, G4int depth = 0);
-	   virtual ~PSTOF();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-};
-
-
-class PSInteractionCoordinatesX : public G4VPrimitiveScorer
-	{
-	public: // with description
-	   PSInteractionCoordinatesX(G4String name, G4int depth = 0);
-	   virtual ~PSInteractionCoordinatesX();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
-
-class PSInteractionCoordinatesY : public G4VPrimitiveScorer
-	{
-	public: // with description
-	   PSInteractionCoordinatesY(G4String name, G4int depth = 0);
-	   virtual ~PSInteractionCoordinatesY();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
-
-
-
-class PSInteractionCoordinatesZ : public G4VPrimitiveScorer
-	{
-	public: // with description
-	   PSInteractionCoordinatesZ(G4String name, G4int depth = 0);
-	   virtual ~PSInteractionCoordinatesZ();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
-
-
-
-class PSInteractionCoordinatesAngleTheta : public G4VPrimitiveScorer
-{
-public: // with description
-   PSInteractionCoordinatesAngleTheta(G4String name, G4int depth = 0);
-   virtual ~PSInteractionCoordinatesAngleTheta();
-
-protected: // with description
-   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-public:
-   virtual void Initialize(G4HCofThisEvent*);
-   virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void clear();
-   virtual void DrawAll();
-   virtual void PrintAll();
-
-private:
-   G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
-};
-
-
-
-class PSInteractionCoordinatesAnglePhi : public G4VPrimitiveScorer
-{
-public: // with description
-   PSInteractionCoordinatesAnglePhi(G4String name, G4int depth = 0);
-   virtual ~PSInteractionCoordinatesAnglePhi();
-
-protected: // with description
-   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-public:
-   virtual void Initialize(G4HCofThisEvent*);
-   virtual void EndOfEvent(G4HCofThisEvent*);
-   virtual void clear();
-   virtual void DrawAll();
-   virtual void PrintAll();
-
-private:
-   G4int HCID;
-   G4THitsMap<G4double>* EvtMap;
-};
-
-
-class PSDetectorNumber : public G4VPrimitiveScorer
-	{
-
-	public: // with description
-	   PSDetectorNumber(G4String name, G4int depth = 0 , G4String VolumeName = "xxx");
-	   virtual ~PSDetectorNumber();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4int>* EvtMap;
-	   G4String m_VolumeName ;
-	};
 #endif
diff --git a/NPSimulation/include/MUST2Array.hh b/NPSimulation/include/MUST2Array.hh
index fd84ddb54c4668db1e9211d40c7df9c3aaafa047..71196c2f5cb5c84244ea51df37bf401b7d8fe128 100644
--- a/NPSimulation/include/MUST2Array.hh
+++ b/NPSimulation/include/MUST2Array.hh
@@ -55,8 +55,9 @@ namespace MUST2
    const G4double MylarCsIThickness = 3*micrometer          ;
    const G4double CsIThickness      = 4.*cm + 2*MylarCsIThickness ;
    const G4double CsIFaceFront      = 12.2*cm                  ;
-   const G4double CsIFaceBack    = 16*cm                    ;
-
+   const G4double CsIFaceBack    	= 16*cm                    ;
+   const G4double DistInterCsI 		= 0.2 * mm;
+   
    // Starting at the front and going to CsI
    const G4double AluStripFront_PosZ   = Length* -0.5 + 0.5*AluStripThickness                       ;
    const G4double Silicon_PosZ      = AluStripFront_PosZ + 0.5*AluStripThickness + 0.5*SiliconThickness     ;
diff --git a/NPSimulation/include/Must2Scorers.hh b/NPSimulation/include/Must2Scorers.hh
index 2240f81dc57def10ae7bb61a090da905dc0f25df..f5867f6ad489637d7873d74f84b84cfcd55c66df 100644
--- a/NPSimulation/include/Must2Scorers.hh
+++ b/NPSimulation/include/Must2Scorers.hh
@@ -27,28 +27,6 @@
 #include "G4VPrimitiveScorer.hh"
 #include "G4THitsMap.hh"
 namespace MUST2 {
-	class PSStripE : public G4VPrimitiveScorer
-	{
-
-	public: // with description
-	   PSStripE(G4String name, G4int depth = 0);
-	   virtual ~PSStripE();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
-	
 	
 	class PSStripNumberX : public G4VPrimitiveScorer
 	{
@@ -70,8 +48,9 @@ namespace MUST2 {
 	private:
 	   G4double  m_StripPlaneSize;
 	   G4int     m_NumberOfStrip ;
+	   G4double  m_StripPitch		 ;
 	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
+	   G4THitsMap<G4int>* EvtMap;
 	};
 
 
@@ -96,16 +75,18 @@ namespace MUST2 {
 	private:
 	   G4double  m_StripPlaneSize;
 	   G4int     m_NumberOfStrip ;
+	   G4double  m_StripPitch		 ;
 	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
+	   G4THitsMap<G4int>* EvtMap;
 	};
 	
-	class PSDetectorNumber : public G4VPrimitiveScorer
+	
+		class PSPadOrCristalNumber : public G4VPrimitiveScorer
 	{
 
 	public: // with description
-	   PSDetectorNumber(G4String name, G4int depth = 0 , G4String VolumeName = "xxx");
-	   virtual ~PSDetectorNumber();
+	   PSPadOrCristalNumber(G4String name, G4int depth = 0);
+	   virtual ~PSPadOrCristalNumber();
 
 	protected: // with description
 	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
@@ -120,7 +101,6 @@ namespace MUST2 {
 	private:
 	   G4int HCID;
 	   G4THitsMap<G4int>* EvtMap;
-	   G4String m_VolumeName ;
 	};
 	
 }
diff --git a/NPSimulation/include/Plastic.hh b/NPSimulation/include/Plastic.hh
index cf541f9aa379bc206485de4c9441e0d486c76c9e..46f3b24fa967e0deed01cfe842a230783326a32f 100644
--- a/NPSimulation/include/Plastic.hh
+++ b/NPSimulation/include/Plastic.hh
@@ -10,16 +10,19 @@
 /*****************************************************************************
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
- * Creation Date  : september 2009                                           *
+ * Creation Date  : September 2009                                           *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe a modular plastic array                              *
+ *  This class describe a Modular cylindrical Plastic Scintillator           *
+ *	Few Material are instantiate and user can choose position and dimension	 * 
+ *  but also the adding of a lead plate on the rear side of the detector     *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
  *                                                                           *
  *****************************************************************************/
+
 // C++ header
 #include <string>
 #include <vector>
@@ -57,6 +60,7 @@ public:
          			 G4double    Phi         		,
          			 G4double	 PlasticThickness	,
          			 G4double	 PlasticRadius		,
+         			 G4String 	Scintillator		,
          			 G4double    LeadThickness      );  
 		
 	void VolumeMaker(G4ThreeVector Det_pos, int DetNumber,G4LogicalVolume* world) ;
@@ -83,7 +87,10 @@ public:
 public: // Material 
 	void InitializeMaterial() 		;
 	// Platic
-	G4Material* m_MaterialPlastic	;
+	G4Material* m_MaterialPlastic_BC400			; //BC-400 type plastic
+	G4Material* m_MaterialPlastic_BC452_2		; //BC452:BC-400 loaded with 2%Pb type plastic
+	G4Material* m_MaterialPlastic_BC452_5		; //BC452:BC-400 loaded with 5%Pb type plastic
+	G4Material* m_MaterialPlastic_BC452_10	; //BC452:BC-400 loaded with 10%Pb type plastic
 	// Lead
 	G4Material* m_MaterialLead		;
 	
@@ -105,7 +112,7 @@ private:
 private:
    
    // if true a Lead plate is added in front or back of the detector
-   vector<double>	  	m_LeadThickness	;
+   vector<double>	  m_LeadThickness	;
    
    vector<double>		m_PlasticThickness	;
    vector<double>		m_PlasticRadius		;
@@ -115,6 +122,9 @@ private:
    vector<G4double>  m_Theta     ; //  > Spherical coordinate plastic volume center
    vector<G4double>  m_Phi    	 ; //  |
 
+	//	Scintillator type
+	vector<G4String> m_Scintillator ;
+
 
 };
 #endif
diff --git a/NPSimulation/include/PrimaryGeneratorAction.hh b/NPSimulation/include/PrimaryGeneratorAction.hh
index 5e2eec1d1f2fc718eabd05f490caf147a79e8011..97475ec1b592513574e707656d59d8f2c53fe100 100644
--- a/NPSimulation/include/PrimaryGeneratorAction.hh
+++ b/NPSimulation/include/PrimaryGeneratorAction.hh
@@ -14,8 +14,8 @@
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class manage the event Generator used in simulation                 *
- *  Every time you had a new kind of event generator, you need to add a few  *
+ *  This class manages the Event Generators used in NPSimulation             *
+ *  Every time you add a new kind of event generator, you need to add a few  *
  *  line in the ReadConfiguration method to detect the associate Token       *
  *                                                                           *
  *---------------------------------------------------------------------------*
@@ -46,20 +46,15 @@ public:
 
 public:
    void GeneratePrimaries(G4Event*);
-   G4ParticleGun* GetParticleGun() {
-      return m_particleGun;
-   }
+   G4ParticleGun* GetParticleGun()	{return m_particleGun;}
 
 public:
    void ReadEventGeneratorFile(string Path);
 
 private:
-   G4ParticleGun*             m_particleGun  ;
-   DetectorConstruction*      m_detector     ;
-   VEventGenerator*        m_EventGenerator  ;
-
+   G4ParticleGun*		m_particleGun;
+   DetectorConstruction*	m_detector;
+   VEventGenerator*		m_EventGenerator;
 };
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
 #endif
diff --git a/NPSimulation/include/Target.hh b/NPSimulation/include/Target.hh
index 3e88dde62c0f8ea4bd2ad1ebb6e36e846ba9e414..170f7394cb4769e9fc416af1668266d5d88841ba 100644
--- a/NPSimulation/include/Target.hh
+++ b/NPSimulation/include/Target.hh
@@ -11,7 +11,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : 06/11/2009                                               *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This class describe Cryogenic and standard Target. Derived from VDetector*
@@ -19,9 +19,16 @@
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
  *  Some improvment need to be done in material dealing                      *
+ *                                                                           *
+ *  + 16/09/2009: Add support for positioning the target with an angle with  *
+ *                respect to the beam (N. de Sereville)                      *
+ *  + 06/11/2009: Add new Token NBLAYERS defining the number of steps used   *
+ *                to slow down the beam in the target (N. de Sereville)      *
+ *                                                                           *
  *****************************************************************************/
 // C++ headers
 #include <string>
+#include <cmath>
 
 // G4 header defining G4 types
 #include "globals.hh"
@@ -36,71 +43,89 @@
 
 using namespace std;
 
-
-
 class Target : public VDetector
 {
-public:
-   Target()               ;
-
-public:
-   // Read stream at Configfile to pick-up parameters of detector (Position,...)
-   // Called in DetecorConstruction::ReadDetextorConfiguration Method
-   void ReadConfiguration(string Path)          ;
-
-   // Construct detector and inialise sensitive part.
-   // Called After DetecorConstruction::AddDetector Method
-   void ConstructDetector(G4LogicalVolume* world)  ;
-
-   // Add Detector branch to the EventTree.
-   // Called After DetecorConstruction::AddDetector Method
-   void InitializeRootOutput()            ;
-
-   // Read sensitive part and fill the Root tree.
-   // Called at in the EventAction::EndOfEventAvtion
-   void ReadSensitive(const G4Event* event)     ;
-
-
-public:
-   G4Material* GetMaterialFromLibrary(G4String MaterialName, G4double Temperature = 0, G4double Pressure = 0);
-
-private:
-   // Target type : true = normal ; false = cryo
-   bool     m_TargetType         ;
-
-   // Standard parameter
-   G4double m_TargetThickness    ;
-   G4double m_TargetRadius       ;
-   G4Material* m_TargetMaterial     ;
-
-   // For Cryo Target
-   G4double m_WindowsThickness      ;
-   G4Material* m_WindowsMaterial    ;
-   G4double m_TargetTemperature     ;
-   G4double m_TargetPressure     ;
-
-   // Positioning
-   G4double    m_TargetX            ;
-   G4double    m_TargetY            ;
-   G4double    m_TargetZ            ;
-
-public:
-   G4double GetTargetThickness() {
-      return m_TargetThickness  ;
-   }
-   G4double GetTargetRadius()    {
-      return m_TargetRadius     ;
-   }
-   G4double GetTargetX()         {
-      return m_TargetX       ;
-   }
-   G4double GetTargetY()         {
-      return m_TargetY       ;
-   }
-   G4double GetTargetZ()         {
-      return m_TargetZ       ;
-   }
-
+	public:
+	   Target();
+	   ~Target(){};
+
+
+	public:
+		//	Read stream at Configfile to pick-up parameters of detector (Position,...)
+		//	Called in DetecorConstruction::ReadDetextorConfiguration Method
+		void ReadConfiguration(string Path);
+
+		//	Construct detector and inialise sensitive part.
+		//	Called After DetecorConstruction::AddDetector Method
+		void ConstructDetector(G4LogicalVolume* world);
+
+		//	Add Detector branch to the EventTree.
+		//	Called After DetecorConstruction::AddDetector Method
+		void InitializeRootOutput();
+
+		//	Read sensitive part and fill the Root tree.
+		//	Called at in the EventAction::EndOfEventAvtion
+		void ReadSensitive(const G4Event* event);
+
+	public:
+		//	method for debug purpose (still to be implemented)
+		//	This method should check if the results of the beam interaction within the target
+		//	(interaction coordinates) are well located inside the target volume
+		bool IsInsideTarget() {return false;};
+
+		// Used to calculate the incident beam direction (taking into account
+		// the emittance) and the vertex of interaction in target
+		// Also compute the energy lost by the beam in the target before interacting
+		void CalculateBeamInteraction(double MeanPosX, double SigmaPosX, double MeanPosTheta, double SigmaPosTheta,
+		                              double MeanPosY, double SigmaPosY, double MeanPosPhi,   double SigmaPosPhi,
+		                              double IncidentBeamEnergy,
+		                              G4ParticleDefinition* BeamName,
+		                              G4ThreeVector &InterCoord, double &AngleEmittanceTheta, double &AngleEmittancePhi,
+		                              double &AngleIncidentTheta, double &AngleIncidentPhi,
+		                              double &FinalBeamEnergy);
+		                              
+		// Used to simulate beam emmitance effect
+		void RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double SigmaY, double &X, double &Y, double NumberOfSigma = 10000);
+
+	public:
+		//	Return Material from the Target Material Library
+		G4Material* GetMaterialFromLibrary(G4String MaterialName, G4double Temperature = 0, G4double Pressure = 0);
+		
+		//	Generate a DEDX file table using the material used in the target
+		void 				WriteDEDXTable(G4ParticleDefinition* Particle,G4double Emin,G4double Emax);
+
+	public:
+		G4double    GetTargetThickness()	{return m_TargetThickness;}
+		G4Material* GetTargetMaterial()		{return m_TargetMaterial;}
+		G4double    GetTargetRadius()			{return m_TargetRadius;}
+		G4double    GetTargetAngle()			{return m_TargetAngle;}
+		G4double    GetTargetX()					{return m_TargetX;}
+		G4double    GetTargetY()					{return m_TargetY;}
+		G4double    GetTargetZ()					{return m_TargetZ;}
+		G4int       GetTargetNbLayers()		{return m_TargetNbLayers;}
+
+
+	private:
+		// Target type : true = normal ; false = cryo
+		bool     m_TargetType;
+
+		// Standard parameter
+		G4double    m_TargetThickness;
+		G4double    m_TargetRadius;
+		G4double    m_TargetAngle;
+		G4Material* m_TargetMaterial;
+		G4int       m_TargetNbLayers;
+
+		// For Cryo Target
+		G4double    m_TargetTemperature;
+		G4double    m_TargetPressure;
+		G4double    m_WindowsThickness;
+		G4Material* m_WindowsMaterial;
+
+		// Positioning
+		G4double    m_TargetX;
+		G4double    m_TargetY;
+		G4double    m_TargetZ;
 };
 
 #endif
diff --git a/NPSimulation/include/ThinSi.hh b/NPSimulation/include/ThinSi.hh
index 86d5f7fbbfcbc0796ca208ba75619ee9719d5787..48febf6c21ae00357bf7ab0ddbe10d0ca78a48f3 100644
--- a/NPSimulation/include/ThinSi.hh
+++ b/NPSimulation/include/ThinSi.hh
@@ -32,9 +32,11 @@
 #include "G4RotationMatrix.hh"
 #include "G4LogicalVolume.hh"
 
-// NPTool header
+// NPSimulation header
 #include "VDetector.hh"
 
+// NPLib 
+#include "TSSSDData.h"
 using namespace std;
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -42,7 +44,7 @@ namespace THINSI
 {
    // Energy and time Resolution
    const G4double ResoTime    = 0      ;
-   const G4double ResoEnergy  = 0.042  ;// = 100keV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoEnergy  = 0.064  ;// = 150keV of Resolution   //   Unit is MeV/2.35
 
    // Geometry
    const G4double DetectorSize   	= 68*mm           ;
@@ -50,7 +52,7 @@ namespace THINSI
    const G4double FrameThickness    = 3*mm            ;
    const G4double SiliconSize    	= 50*mm           ;
    const G4double AluThickness      = 0.4*micrometer  ;
-   const G4int  NumberOfStrip    	= 32       		  ;
+   const G4int  NumberOfStrip    	= 16       		  ;
 
    const G4double AluStripFront_PosZ 	= -0.5*SiliconThickness - 0.5*AluThickness ;
    const G4double Si_PosZ        		= 0                                 ;
@@ -119,7 +121,29 @@ public:
    ///////////Event class to store Data////////////////
    ////////////////////////////////////////////////////
 private:
-   G4double    m_Energy ;
+   TSSSDData*    m_Event ;
+
+	 ////////////////////////////////////////////////////
+   ///////////////// Scorer Related ///////////////////
+   ////////////////////////////////////////////////////
+
+private:
+		//	Initialize all Scorer used by the MUST2Array
+		void InitializeScorers() ;
+	 
+		//	Scorer Associate to the 20um Silicon stage
+		G4MultiFunctionalDetector*	m_StripScorer ; 
+
+
+
+private:
+		// 	Initialize mmaterial used in detector definition
+		void InitializeMaterial();
+
+		//	List of material
+		G4Material* m_MaterialSilicon 	;
+   	G4Material* m_MaterialAl 				;
+   	G4Material* m_MaterialVacuum 		;
 
    ////////////////////////////////////////////////////
    ///////////////Private intern Data//////////////////
diff --git a/NPSimulation/include/PlasticScorers.hh b/NPSimulation/include/ThinSiScorers.hh
similarity index 55%
rename from NPSimulation/include/PlasticScorers.hh
rename to NPSimulation/include/ThinSiScorers.hh
index 7490280c3720dd6720ce4d6fd3b9ebce74adf293..9449cffa80c1396dc988e3899c951de766a70bba 100644
--- a/NPSimulation/include/PlasticScorers.hh
+++ b/NPSimulation/include/ThinSiScorers.hh
@@ -1,5 +1,5 @@
-#ifndef GeneralScorers_h
-#define GeneralScorers_h 1
+#ifndef ThinSiScorers_h
+#define ThinSiScorers_h 1
 /*****************************************************************************
  * Copyright (C) 2009   this file is part of the NPTool Project              *
  *                                                                           *
@@ -10,68 +10,31 @@
 /*****************************************************************************
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
- * Creation Date  : September 2009                                           *
+ * Creation Date  : October 2009                                             *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class old some of the Platic Scorer, shared by different detector.  *
+ *  File old the scorer specific to the ThinSi Detector                       *
+ *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ * Those Scorer use TrackID as map index. This way ones can rebuild energy   *
+ *  deposit, time of flight or position,... particle by particle for each    *
+ *  event.Because standard scorer provide by G4 don't work this way but using* 
+ *  a global ID for each event you should not use those scorer with some G4  *
+ *  provided ones or being very carefull doing so.                           *
  *****************************************************************************/
 #include "G4VPrimitiveScorer.hh"
 #include "G4THitsMap.hh"
-namespace PLASTIC {
-class PSEnergy : public G4VPrimitiveScorer
-	{
-
-	public: // with description
-	   PSEnergy(G4String name, G4int depth = 0);
-	   virtual ~PSEnergy();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-	};
 
-class PSTOF : public G4VPrimitiveScorer
-{
-
-	public: // with description
-	   PSTOF(G4String name, G4int depth = 0);
-	   virtual ~PSTOF();
-
-	protected: // with description
-	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
-
-	public:
-	   virtual void Initialize(G4HCofThisEvent*);
-	   virtual void EndOfEvent(G4HCofThisEvent*);
-	   virtual void clear();
-	   virtual void DrawAll();
-	   virtual void PrintAll();
-
-	private:
-	   G4int HCID;
-	   G4THitsMap<G4double>* EvtMap;
-};
-
-
-class PSDetectorNumber : public G4VPrimitiveScorer
+namespace THINSI {
+	
+	class PSStripNumber : public G4VPrimitiveScorer
 	{
 
 	public: // with description
-	   PSDetectorNumber(G4String name, G4int depth = 0 );
-	   virtual ~PSDetectorNumber();
+	   PSStripNumber(G4String name, G4int depth = 0, G4double StripPlaneSize = 50*mm, G4int NumberOfStrip = 16);
+	   virtual ~PSStripNumber();
 
 	protected: // with description
 	   virtual G4bool ProcessHits(G4Step*, G4TouchableHistory*);
@@ -84,11 +47,13 @@ class PSDetectorNumber : public G4VPrimitiveScorer
 	   virtual void PrintAll();
 
 	private:
+	   G4double  m_StripPlaneSize;
+	   G4int     m_NumberOfStrip ;
+	   G4double  m_StripPitch    ;
 	   G4int HCID;
 	   G4THitsMap<G4int>* EvtMap;
 	};
 
-
 }
 
 #endif
diff --git a/NPSimulation/include/VDetector.hh b/NPSimulation/include/VDetector.hh
index cd34e65017e0fa4d09dec1e3da354bacaa099a9d..dd98b31e4954b4c0f6a82c41319822d163db637d 100644
--- a/NPSimulation/include/VDetector.hh
+++ b/NPSimulation/include/VDetector.hh
@@ -22,6 +22,18 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *	Detector inheriting from VDetector should follow this Naming convention  *
+ *    for logical volume:                                                    *
+ *		DetectorNameX_SubPart                                                  *
+ *		                                                                       *
+ *		-DetectorName is the name of the detector, like "MUST2Array",          * 
+ *		note that use of _ within the name is prohibitted.                     *
+ *                                                                           *
+ *		-X is the detector Number, for example if you have two plastic then you*
+ *		will have Plastic1 and Plastic2                                        *
+ *                                                                           *
+ *		-SubPart is the optionnal sub part, like for examples Si and CsI in    *
+ *      MUST2. Note that you can add as many as _SubPart you need            *
  *                                                                           *
  *****************************************************************************/
 // C++ header
@@ -48,7 +60,7 @@ public:
    virtual ~VDetector()   ;
 
    // Read stream at Configfile to pick-up parameters of detector (Position,...)
-   // Called in DetecorConstruction::ReadDetextorConfiguration Method
+   // Called in DetectorConstruction::ReadDetectorConfiguration Method
    virtual void ReadConfiguration(string) = 0;
 
    // Construct detector and inialise sensitive part.
@@ -61,7 +73,7 @@ public:
 
    // Add Detector branch to the EventTree.
    // Called After DetecorConstruction::AddDetector Method
-   virtual void InitializeRootOutput();
+   virtual void InitializeRootOutput() ;
    
    // Add Detector branch to the EventTree.
    // Called After DetecorConstruction::AddDetector Method
diff --git a/NPSimulation/include/VEventGenerator.hh b/NPSimulation/include/VEventGenerator.hh
index 1904d054c81f320d37e4f5000cd815e46ce8e939..59bbd3bca32a6e67823c58929591f519637b554c 100644
--- a/NPSimulation/include/VEventGenerator.hh
+++ b/NPSimulation/include/VEventGenerator.hh
@@ -11,7 +11,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : 03/11/2009                                               *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  All event generator added in the project should derive from this virtual * 
@@ -23,17 +23,23 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *    + 03/11/09: Adding EffectiveThiknessBeforeInteraction in the           *
+ *                CalculateBeamInteraction() method (N. de Sereville)        *
  *                                                                           *
  *****************************************************************************/
 // C++ header
 #include <string>
 
-// G4 header defining G$ types
+// G4 header defining G4 types
 #include "globals.hh"
 
 // G4 headers
 #include "G4ParticleGun.hh"
 #include "G4Event.hh"
+#include "G4ThreeVector.hh"
+
+// NPTool headers
+#include "Target.hh"
 
 using namespace CLHEP;
 using namespace std;
@@ -52,13 +58,10 @@ public:
    virtual void InitializeRootOutput() {};
 
    // Used in some case to generate event inside the target
-   virtual void SetTargetThickness(G4double) {};
-   virtual void SetTargetRadius(G4double) {};
-   virtual void SetTargetCoordinate(G4double, G4double, G4double) {};
+   virtual void SetTarget(Target*) {};
    
-   //	Used to simulate beam emmitance effect
-   void RandomGaussian2D(double MeanX,double MeanY,double SigmaX,double SigmaY,double &X,double &Y, double NumberOfSigma=10000);
-
+   // Used to simulate beam emmitance effect
+   void RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double SigmaY, double &X, double &Y, double NumberOfSigma = 10000);
 };
 
 
diff --git a/NPSimulation/src/AnnularS1.cc b/NPSimulation/src/AnnularS1.cc
index e24141ea2755ec3161cbf7037e05a32f604737ee..c5fb036b41be93b6215c973a1288b2b59773d4c7 100644
--- a/NPSimulation/src/AnnularS1.cc
+++ b/NPSimulation/src/AnnularS1.cc
@@ -9,13 +9,14 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 21/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 16/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define the S1 detector from Micron                            *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *                                                                           *
+ *  + 11/10/09: Change scorer philosophy, one scorer for the detector number *
+ *              added (N. de Sereville)                                      *
  *                                                                           *
  *****************************************************************************/
 
@@ -44,8 +45,8 @@
 #include "G4MultiFunctionalDetector.hh"
 
 // NPTool headers
-#include "AnnularS1.hh"
 #include "GeneralScorers.hh"
+#include "AnnularS1.hh"
 #include "AnnularS1Scorers.hh"
 #include "TS1Data.h"
 #include "RootOutput.h"
@@ -62,7 +63,7 @@ using namespace ANNULARS1;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 AnnularS1::AnnularS1()
 {
-   m_Event      = new TS1Data();
+   m_Event = new TS1Data();
 }
 
 
@@ -76,28 +77,24 @@ AnnularS1::~AnnularS1()
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void AnnularS1::AddModule(G4double PosZ,
-                          G4double Rmin,
-                          G4double Rmax)
+void AnnularS1::AddModule(G4double PosZ)
 {
    m_PosZ.push_back(PosZ);
-   m_Rmin.push_back(Rmin);
-   m_Rmax.push_back(Rmax);
 }
 
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
-                            G4ThreeVector MMpos     ,
-                            G4RotationMatrix* MMrot ,
-                            G4LogicalVolume* world)
+void AnnularS1::VolumeMaker(G4int             DetecNumber,
+                            G4ThreeVector     position,
+                            G4RotationMatrix* rotation,
+                            G4LogicalVolume*  world)
 {
-   G4double NbrTelescopes = TelescopeNumber  ;
-   G4String DetectorNumber                   ;
-   ostringstream Number                      ;
-   Number << NbrTelescopes                   ;
-   DetectorNumber = Number.str()             ;
+   G4double NbrTelescopes = DetecNumber;
+   G4String DetectorNumber;
+   ostringstream Number;
+   Number << NbrTelescopes;
+   DetectorNumber = Number.str();
 
    ////////////////////////////////////////////////////////////////
    /////////////////Element  Definition ///////////////////////////
@@ -128,14 +125,14 @@ void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
    G4Material* Silicon = new G4Material("Si", z = 14., a, density);
 
    // Al
-   density = 2.702 * g / cm3;
-   a = 26.98 * g / mole;
-   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
+//   density = 2.702 * g / cm3;
+//   a = 26.98 * g / mole;
+//   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
 
    // Iron
-   density = 7.874 * g / cm3;
-   a = 55.847 * g / mole;
-   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
+//   density = 7.874 * g / cm3;
+//   a = 55.847 * g / mole;
+//   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
 
    // CsI
    density = 4.51 * g / cm3;
@@ -172,28 +169,28 @@ void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
    G4PVPlacement* PVPBuffer ;
 
    // Name of the module
-   G4String Name = "AnnularS1" + DetectorNumber;
+   G4String Name = "S1Annular" + DetectorNumber;
 
    // Definition of the volume containing the sensitive detector
-   G4Tubs* solidMM = new G4Tubs(Name, 
+   G4Tubs* solidAnnularS1 = new G4Tubs(Name, 
                                 Rmin,
                                 Rmax,
                                 Length/2,
                                 0*deg, 
                                 360*deg);
 
-//   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Iron, Name, 0, 0, 0);
-   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, Vacuum, Name, 0, 0, 0);
+//   G4LogicalVolume* logicAnnularS1 = new G4LogicalVolume(solidAnnularS1, Iron, Name, 0, 0, 0);
+   G4LogicalVolume* logicAnnularS1 = new G4LogicalVolume(solidAnnularS1, Vacuum, Name, 0, 0, 0);
 
-   PVPBuffer     = new G4PVPlacement(G4Transform3D(*MMrot, MMpos) ,
-                                     logicMM                      ,
-                                     Name                         ,
-                                     world                        ,
-                                     false                        ,
+   PVPBuffer     = new G4PVPlacement(G4Transform3D(*rotation, position),
+                                     logicAnnularS1,
+                                     Name,
+                                     world,
+                                     false,
                                      0);
 
-   logicMM->SetVisAttributes(G4VisAttributes::Invisible);
-   if (m_non_sensitive_part_visiualisation) logicMM->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
+   logicAnnularS1->SetVisAttributes(G4VisAttributes::Invisible);
+   if (m_non_sensitive_part_visiualisation) logicAnnularS1->SetVisAttributes(G4VisAttributes(G4Colour(0.90, 0.90, 0.90)));
 
 
    // Aluminium dead layers
@@ -210,8 +207,8 @@ void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
 //   G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Aluminium, "logicAluStrip", 0, 0, 0);
    G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, Vacuum, "logicAluStrip", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "G" + DetectorNumber + "AluStripFront", logicMM, false, 0);
-   PVPBuffer = new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, "G" + DetectorNumber + "AluStripBack",  logicMM, false, 0);
+   PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicAnnularS1, false, 0);
+   PVPBuffer = new G4PVPlacement(0, positionAluStripBack,  logicAluStrip, Name + "_AluStripBack",  logicAnnularS1, false, 0);
 
    logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
 
@@ -227,53 +224,15 @@ void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
 
    G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, "G" + DetectorNumber + "Silicon", logicMM, false, 0);
+   PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicAnnularS1, false, 0);
 
    // Set Silicon strip sensible
-   // instantiate a new scorer
-   G4MultiFunctionalDetector* StripScorer = new G4MultiFunctionalDetector("ScorerAnnularS1_" + DetectorNumber);
-   // attach it to the Silicon plate
-   logicSilicon->SetSensitiveDetector(StripScorer);
-   // and declare it to the SDManager
-   G4SDManager::GetSDMpointer()->AddNewDetector(StripScorer);
-
-   // instantiate primitive scorer
-   G4VPrimitiveScorer* energy       ;
-   G4VPrimitiveScorer* TOF          ;
-   G4VPrimitiveScorer* ThetaStripPosition  ;
-   G4VPrimitiveScorer* PhiStripPosition  ;
-   G4VPrimitiveScorer* InteractionCoordinatesX  ;
-   G4VPrimitiveScorer* InteractionCoordinatesY  ;
-   G4VPrimitiveScorer* InteractionCoordinatesZ  ;
-   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta  ;
-   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi  ;
-
-   // create primitive scorer
-   energy         = new AnnularS1ScorerEnergy("StripEnergy", 0)                          ;
-   TOF            = new AnnularS1ScorerTime("StripTime", 0)                               ;
-   ThetaStripPosition = new AnnularS1ScorerThetaStripNumber("ThetaStripNumber", 0, FirstStageRmax, 128) ;
-   PhiStripPosition = new AnnularS1ScorerPhiStripNumber("PhiStripNumber", 0, FirstStageRmax, 128) ;
-   InteractionCoordinatesX = new PSInteractionCoordinatesX("InterCoordX", 0) ;
-   InteractionCoordinatesY = new PSInteractionCoordinatesY("InterCoordY", 0) ;
-   InteractionCoordinatesZ = new PSInteractionCoordinatesZ("InterCoordZ", 0) ;
-   InteractionCoordinatesAngleTheta = new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0) ;
-   InteractionCoordinatesAnglePhi   = new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0) ;
-
-   // and register it to the multifunctionnal detector
-   StripScorer->RegisterPrimitive(energy)         ;
-   StripScorer->RegisterPrimitive(TOF)            ;
-   StripScorer->RegisterPrimitive(ThetaStripPosition) ;
-   StripScorer->RegisterPrimitive(PhiStripPosition) ;
-   StripScorer->RegisterPrimitive(InteractionCoordinatesX) ;
-   StripScorer->RegisterPrimitive(InteractionCoordinatesY) ;
-   StripScorer->RegisterPrimitive(InteractionCoordinatesZ) ;
-   StripScorer->RegisterPrimitive(InteractionCoordinatesAngleTheta) ;
-   StripScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi) ;
+   logicSilicon->SetSensitiveDetector(m_Scorer);
 
    ///Visualisation of Silicon Strip
-//   G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5)) ;
-   G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9)) ;
-   logicSilicon->SetVisAttributes(SiliconVisAtt)                        ;
+//   G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.5, 0.5, 0.5));
+   G4VisAttributes* SiliconVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9));
+   logicSilicon->SetVisAttributes(SiliconVisAtt);
 }
 
 
@@ -287,97 +246,96 @@ void AnnularS1::VolumeMaker(G4int TelescopeNumber   ,
 // Called in DetecorConstruction::ReadDetextorConfiguration Method
 void AnnularS1::ReadConfiguration(string Path)
 {
-   ifstream ConfigFile           ;
-   ConfigFile.open(Path.c_str()) ;
-   string LineBuffer          ;
-   string DataBuffer          ;
+   ifstream ConfigFile;
+   ConfigFile.open(Path.c_str());
+   string LineBuffer, DataBuffer;
 
-   G4double Z = 0, Rmin = 0, Rmax = 0;
-
-   bool check_Z    = false ;
-   bool check_Rmin = false ;
-   bool check_Rmax = false ;
+   G4double Z = 0;
+   bool check_Z = false , check_VIS=false,ReadingStatus = false ;
 
    while (!ConfigFile.eof()) {
       getline(ConfigFile, LineBuffer);
-      if (LineBuffer.compare(0, 9, "AnnularS1") == 0) {
-         G4cout << "///" << G4endl           ;
-         G4cout << "Annular element found: " << G4endl   ;
-
-         ConfigFile >> DataBuffer;
-         //Position method
-         if (DataBuffer.compare(0, 2, "Z=") == 0) {
-            check_Z = true;
-            ConfigFile >> DataBuffer ;
-            Z = atof(DataBuffer.c_str()) ;
-            Z = Z * mm;
-            cout << "Z:  " << Z / mm << endl;
-         }
-
-         ConfigFile >> DataBuffer;
-         //Position method
-         if (DataBuffer.compare(0, 5, "RMIN=") == 0) {
-            check_Rmin = true;
-            ConfigFile >> DataBuffer ;
-            Rmin = atof(DataBuffer.c_str()) ;
-            Rmin = Rmin * mm;
-            cout << "Rmin:  " << Rmin / mm << endl;
-         }
 
-         ConfigFile >> DataBuffer;
-         //Position method
-         if (DataBuffer.compare(0, 5, "RMAX=") == 0) {
-            check_Rmax = true;
-            ConfigFile >> DataBuffer ;
-            Rmax = atof(DataBuffer.c_str()) ;
-            Rmax = Rmax * mm;
-            cout << "Rmax:  " << Rmax / mm << endl;
-         }
-
-         ConfigFile >> DataBuffer;
-         if (DataBuffer.compare(0, 4, "VIS=") == 0) {
-            ConfigFile >> DataBuffer;
-            if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true;
-         }
 
-         //Add The previously define telescope
-         //With position method
-         if (check_Z && check_Rmin && check_Rmax) {
-            AddModule(Z,
-                      Rmin,
-                      Rmax);
-         }
-         else {
-            G4cout << "Wrong Token, AnnularS1 Annular Element not added" << G4endl;
-         }
-      }
+		if (LineBuffer.compare(0, 9, "AnnularS1") == 0) {
+         G4cout << "///" << G4endl           ;
+         G4cout << "Annular element found: " << G4endl   ;
+					ReadingStatus = true ;
+			}
+	
+		else ReadingStatus = false ;
+
+		while(ReadingStatus)
+			{
+				ConfigFile >> DataBuffer;
+
+				//Search for comment Symbol %
+	      if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+	      //Position method
+	      else if (DataBuffer.compare(0, 2, "Z=") == 0) {
+	            check_Z = true;
+	            ConfigFile >> DataBuffer ;
+	            Z = atof(DataBuffer.c_str()) ;
+	            Z = Z * mm;
+	            cout << "Z:  " << Z / mm << endl;
+	         }
+
+	       else if (DataBuffer.compare(0, 4, "VIS=") == 0) {
+							check_VIS = true ;
+	            ConfigFile >> DataBuffer;
+	            if (DataBuffer.compare(0, 3, "all") == 0) m_non_sensitive_part_visiualisation = true;
+	         }
+
+
+					///////////////////////////////////////////////////
+					//	If no Detector Token and no comment, toggle out
+					else 
+						{ReadingStatus = false; G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl ;}
+
+
+	         //Add The previously define telescope
+	         //With position method
+	         if (check_Z&&check_VIS) {
+	            AddModule(Z);
+							check_Z = false ;
+							check_VIS=false	;
+							ReadingStatus = false 			;	
+							cout << "///"<< endl ;	    
+	         }
+
+			}
+
+			
+      
    }
 }
 
+
+
 // Construct detector and inialise sensitive part.
 // Called After DetecorConstruction::AddDetector Method
 void AnnularS1::ConstructDetector(G4LogicalVolume* world)
 {
-   G4RotationMatrix* MMrot    = NULL                   ;
-//   G4ThreeVector     MMpos    = G4ThreeVector(0, 0, 0) ;
-   MMpos = G4ThreeVector(0, 0, 0) ;
+   G4RotationMatrix* rotation = NULL;
+   G4ThreeVector     position = G4ThreeVector(0, 0, 0);
 
    G4int NumberOfModule = m_PosZ.size() ;
 
    for (G4int i = 0; i < NumberOfModule; i++) {
       // translation to position the module
-      MMpos = G4ThreeVector(0, 0, m_PosZ[i]);
+      position = G4ThreeVector(0, 0, m_PosZ[i]);
 
       // Passage Matrix from Lab Referential to Module Referential
       // Identity matrix by default
-      MMrot = new G4RotationMatrix();
-      if (MMpos.z() < 0) MMrot->rotateX(180*deg);
+      rotation = new G4RotationMatrix();
+      if (position.z() < 0) rotation->rotateX(180*deg);
 
       // Build geometry and declare scorers
-      VolumeMaker(i + 1, MMpos, MMrot, world);
+      VolumeMaker(i + 1, position, rotation, world);
    }
 
-   delete MMrot ;
+   delete rotation ;
 }
 
 
@@ -397,236 +355,265 @@ void AnnularS1::InitializeRootOutput()
 // Called at in the EventAction::EndOfEventAvtion
 void AnnularS1::ReadSensitive(const G4Event* event)
 {
-   bool checkSi = false      ;
-   G4String DetectorNumber ;
-
    // Clear ROOT objects
    m_Event->Clear();
 
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////// Used to Read Event Map of detector //////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-
+   //////////////////////////////////////////////////////////////////////////////////
+   /////////////// Variables  Used to Read Event Map of detector ////////////////////
+   //////////////////////////////////////////////////////////////////////////////////
    // First Stage
-   std::map<G4int, G4double*>::iterator Energy_itr     ;
-   std::map<G4int, G4double*>::iterator Time_itr    ;
-   std::map<G4int, G4double*>::iterator X_itr       ;
-   std::map<G4int, G4double*>::iterator Y_itr       ;
-   std::map<G4int, G4double*>::iterator Pos_X_itr       ;
-   std::map<G4int, G4double*>::iterator Pos_Y_itr       ;
-   std::map<G4int, G4double*>::iterator Pos_Z_itr       ;
-   std::map<G4int, G4double*>::iterator Ang_Theta_itr       ;
-   std::map<G4int, G4double*>::iterator Ang_Phi_itr       ;
-
-   G4THitsMap<G4double>* EnergyHitMap              ;
-   G4THitsMap<G4double>* TimeHitMap             ;
-   G4THitsMap<G4double>* XHitMap                ;
-   G4THitsMap<G4double>* YHitMap                ;
-   G4THitsMap<G4double>* PosXHitMap                ;
-   G4THitsMap<G4double>* PosYHitMap                ;
-   G4THitsMap<G4double>* PosZHitMap                ;
-   G4THitsMap<G4double>* AngThetaHitMap                ;
-   G4THitsMap<G4double>* AngPhiHitMap                ;
-
-   // NULL pointer are given to avoid warning at compilation
-
-
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-   G4int HitNumber = 0;
-   G4int NumberOfModule = m_PosZ.size() ;
+   std::map<G4int, G4int*>::iterator DetectorNumber_itr;
+   std::map<G4int, G4double*>::iterator Energy_itr;
+   std::map<G4int, G4double*>::iterator Time_itr;
+   std::map<G4int, G4double*>::iterator X_itr;
+   std::map<G4int, G4double*>::iterator Y_itr;
+   std::map<G4int, G4double*>::iterator Pos_X_itr;
+   std::map<G4int, G4double*>::iterator Pos_Y_itr;
+   std::map<G4int, G4double*>::iterator Pos_Z_itr;
+   std::map<G4int, G4double*>::iterator Ang_Theta_itr;
+   std::map<G4int, G4double*>::iterator Ang_Phi_itr;
+
+   G4THitsMap<G4int>*    DetectorNumberHitMap;
+   G4THitsMap<G4double>* EnergyHitMap;
+   G4THitsMap<G4double>* TimeHitMap;
+   G4THitsMap<G4double>* XHitMap;
+   G4THitsMap<G4double>* YHitMap;
+   G4THitsMap<G4double>* PosXHitMap;
+   G4THitsMap<G4double>* PosYHitMap;
+   G4THitsMap<G4double>* PosZHitMap;
+   G4THitsMap<G4double>* AngThetaHitMap;
+   G4THitsMap<G4double>* AngPhiHitMap;
+
+   /////////////////////////////////////////////////////////////////////////////////
+   ////////////////// Read scorers  ////////////////////////////////////////////////
+   /////////////////////////////////////////////////////////////////////////////////
+   // Read the Scorer associated to the first Stage
+   //Detector Number
+   G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/DetectorNumber");
+   DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID));
+   DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin();
+
+   //Energy
+   G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/StripEnergy")   ;
+   EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                    ;
+   Energy_itr = EnergyHitMap->GetMap()->begin()                                                          ;
+
+   //Time of Flight
+   G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/StripTime")    ;
+   TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))                        ;
+   Time_itr = TimeHitMap->GetMap()->begin()                                                              ;
+
+   //Strip Number X
+   G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/ThetaStripNumber")    ;
+   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   X_itr = XHitMap->GetMap()->begin()                                                                    ;
+
+   //Strip Number Y
+   G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/PhiStripNumber")    ;
+   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   Y_itr = YHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate X
+   G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/InterCoordX")    ;
+   PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))                              ;
+   Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Y
+   G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/InterCoordY")    ;
+   PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))                              ;
+   Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Z
+   G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/InterCoordZ")    ;
+   PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))                              ;
+   Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Theta
+   G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/InterCoordAngTheta")    ;
+   AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                              ;
+   Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Phi
+   G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1/InterCoordAngPhi");
+   AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID));
+   Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+
+   // Check the size of different map
+   G4int sizeN = DetectorNumberHitMap->entries();
+   G4int sizeE = EnergyHitMap->entries();
+   G4int sizeT = TimeHitMap->entries();
+   G4int sizeX = XHitMap->entries();
+   G4int sizeY = YHitMap->entries();
+
+   if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
+      G4cout << "No match size Si Event Map: sE:"
+      << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
+      return;
+   }
 
-   for (G4int i = 0 ; i < NumberOfModule ; i++) {
-      checkSi = false;
-
-      G4int k = i + 1;
-      ostringstream buffer;
-      buffer << k;
-      DetectorNumber = buffer.str();
-
-      // Read the Scorer associated to the first Stage
-      //Energy
-      G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/StripEnergy")   ;
-      EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                    ;
-      Energy_itr = EnergyHitMap->GetMap()->begin()                                                          ;
-
-      //Time of Flight
-      G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/StripTime")    ;
-      TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))                        ;
-      Time_itr = TimeHitMap->GetMap()->begin()                                                              ;
-
-      //Strip Number X
-      G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/ThetaStripNumber")    ;
-      XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
-      X_itr = XHitMap->GetMap()->begin()                                                                    ;
-
-      //Strip Number Y
-      G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/PhiStripNumber")    ;
-      YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
-      Y_itr = YHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate X
-      G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/InterCoordX")    ;
-      PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))                              ;
-      Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Y
-      G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/InterCoordY")    ;
-      PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))                              ;
-      Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Z
-      G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/InterCoordZ")    ;
-      PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))                              ;
-      Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Angle Theta
-      G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/InterCoordAngTheta")    ;
-      AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                              ;
-      Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Angle Phi
-      G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ScorerAnnularS1_" + DetectorNumber + "/InterCoordAngPhi")    ;
-      AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))                              ;
-      Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()                                                                    ;
-
-      // Check the size of different map
-      G4int sizeE = EnergyHitMap->entries();
-      G4int sizeT = TimeHitMap->entries();
-      G4int sizeX = XHitMap->entries();
-      G4int sizeY = YHitMap->entries();
-
-      if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
-         G4cout << "No match size Si Event Map: sE:"
-         << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
-         return;
-      }
-
-      // Loop on Strip energy
-      for (G4int l = 0 ; l < sizeE ; l++) {
-         G4int ETrackID  =   Energy_itr->first     ;
-         G4double E     = *(Energy_itr->second)    ;
-
-         if (E > 0) {
-            checkSi = true   ;
-            m_Event->SetS1ThetaEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-            m_Event->SetS1PhiEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-
-            //  Time
-            Time_itr = TimeHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeT ; h++) {
-               G4int TTrackID  =   Time_itr->first       ;
-               G4double T     = *(Time_itr->second)      ;
-
-               if (TTrackID == ETrackID) {
-                  T = RandGauss::shoot(T, ResoTimePPAC)   ;
-                  m_Event->SetS1ThetaTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-                  m_Event->SetS1PhiTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-               }
-               Time_itr++;
+   // Loop on AnnularS1 number 
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+
+      if (N > 0) {
+         // Fill detector number
+         m_Event->SetS1ThetaEDetectorNbr(N);
+         m_Event->SetS1ThetaTDetectorNbr(N);
+         m_Event->SetS1PhiEDetectorNbr(N);
+         m_Event->SetS1PhiTDetectorNbr(N);
+
+         //  Energy
+         Energy_itr = EnergyHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeE ; h++) {
+            G4int ETrackID =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               m_Event->SetS1ThetaEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               m_Event->SetS1PhiEEnergy(RandGauss::shoot(E, ResoFirstStage));
             }
+            Energy_itr++;
+         }
 
-            // Theta
-            X_itr = XHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first     ;
-               G4double X     = *(X_itr->second)      ;
-               if (XTrackID == ETrackID) {
-                  m_Event->SetS1ThetaEDetectorNbr(k) ;
-                  m_Event->SetS1ThetaTDetectorNbr(k) ;
-                  m_Event->SetS1ThetaEStripNbr(X)   ;
-                  m_Event->SetS1ThetaTStripNbr(X)   ;
-               }
-
-               X_itr++;
+         //  Time
+         Time_itr = TimeHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeT ; h++) {
+            G4int TTrackID =   Time_itr->first - N;
+            G4double T     = *(Time_itr->second);
+            if (TTrackID == NTrackID) {
+               T = RandGauss::shoot(T, ResoTimePPAC)   ;
+               m_Event->SetS1ThetaTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
+               m_Event->SetS1PhiTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
             }
+            Time_itr++;
+         }
 
-            // Phi
-            Y_itr = YHitMap->GetMap()->begin()  ;
-            for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first    ;
-               G4double Y     = *(Y_itr->second)      ;
-               if (YTrackID == ETrackID) {
-                  m_Event->SetS1PhiEDetectorNbr(k) ;
-                  m_Event->SetS1PhiTDetectorNbr(k) ;
-                  m_Event->SetS1PhiEStripNbr(Y)   ;
-                  m_Event->SetS1PhiTStripNbr(Y)   ;
-               }
-
-               Y_itr++;
+         // Theta
+         X_itr = XHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int XTrackID  =   X_itr->first - N;
+            G4double X     = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               m_Event->SetS1ThetaEStripNbr(X)   ;
+               m_Event->SetS1ThetaTStripNbr(X)   ;
             }
+            X_itr++;
+         }
 
-            // Pos X
-            Pos_X_itr = PosXHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosXTrackID =   Pos_X_itr->first     ;
-               G4double PosX     = *(Pos_X_itr->second)      ;
-               if (PosXTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedPositionX(PosX) ;
-               }
-               Pos_X_itr++;
+         // Phi
+         Y_itr = YHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeY ; h++) {
+            G4int YTrackID  =   Y_itr->first - N;
+            G4double Y     = *(Y_itr->second);
+            if (YTrackID == NTrackID) {
+               m_Event->SetS1PhiEStripNbr(Y);
+               m_Event->SetS1PhiTStripNbr(Y);
             }
+            Y_itr++;
+         }
 
-            // Pos Y
-            Pos_Y_itr = PosYHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosYTrackID =   Pos_Y_itr->first     ;
-               G4double PosY     = *(Pos_Y_itr->second)      ;
-               if (PosYTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedPositionY(PosY) ;
-               }
-               Pos_Y_itr++;
+         // Pos X
+         Pos_X_itr = PosXHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int PosXTrackID =   Pos_X_itr->first - N;
+            G4double PosX     = *(Pos_X_itr->second);
+            if (PosXTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionX(PosX);
             }
+            Pos_X_itr++;
+         }
 
-            // Pos Z
-            Pos_Z_itr = PosZHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosZTrackID =   Pos_Z_itr->first     ;
-               G4double PosZ     = *(Pos_Z_itr->second)      ;
-               if (PosZTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedPositionZ(PosZ) ;
-               }
-               Pos_Z_itr++;
+         // Pos Y
+         Pos_Y_itr = PosYHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int PosYTrackID =   Pos_Y_itr->first - N;
+            G4double PosY     = *(Pos_Y_itr->second);
+            if (PosYTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionY(PosY);
             }
+            Pos_Y_itr++;
+         }
 
-            // Angle Theta
-            Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
-               G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-               if (AngThetaTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
-               }
-               Ang_Theta_itr++;
+         // Pos Z
+         Pos_Z_itr = PosZHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int PosZTrackID =   Pos_Z_itr->first - N;
+            G4double PosZ     = *(Pos_Z_itr->second);
+            if (PosZTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedPositionZ(PosZ);
             }
+            Pos_Z_itr++;
+         }
 
-            // Angle Phi
-            Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
-               G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-               if (AngPhiTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
-               }
-               Ang_Phi_itr++;
+         // Angle Theta
+         Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int AngThetaTrackID =   Ang_Theta_itr->first - N;
+            G4double AngTheta     = *(Ang_Theta_itr->second);
+            if (AngThetaTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAngleTheta(AngTheta);
             }
+            Ang_Theta_itr++;
+         }
 
-
+         // Angle Phi
+         Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeX ; h++) {
+            G4int AngPhiTrackID =   Ang_Phi_itr->first - N;
+            G4double AngPhi     = *(Ang_Phi_itr->second);
+            if (AngPhiTrackID == NTrackID) {
+               ms_InterCoord->SetDetectedAnglePhi(AngPhi);
+            }
+            Ang_Phi_itr++;
          }
 
-         Energy_itr++;
-         if (checkSi) HitNumber++ ;
-      }
-
-      // clear map for next event
-      EnergyHitMap   ->clear();
-      TimeHitMap     ->clear();
-      XHitMap        ->clear();
-      YHitMap        ->clear();
-      PosXHitMap     ->clear();
-      PosYHitMap     ->clear();
-      PosZHitMap     ->clear();
-      AngThetaHitMap ->clear();
-      AngPhiHitMap   ->clear();
-   }
+      } // end if number of detector > 0
+
+      DetectorNumber_itr++;
+   } // end loop on detector multiplicity
+
+   // clear map for next event
+   DetectorNumberHitMap -> clear();
+   EnergyHitMap         -> clear();
+   TimeHitMap           -> clear();
+   XHitMap              -> clear();
+   YHitMap              -> clear();
+   PosXHitMap           -> clear();
+   PosYHitMap           -> clear();
+   PosZHitMap           -> clear();
+   AngThetaHitMap       -> clear();
+   AngPhiHitMap         -> clear();
+}
+
+
+
+void AnnularS1::InitializeScorers()
+{
+   // Associate Scorer
+   m_Scorer = new G4MultiFunctionalDetector("ScorerAnnularS1");
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "S1Annular", 0);
+   G4VPrimitiveScorer* Energy                           = new GENERALSCORERS::PSEnergy("StripEnergy", "S1Annular", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("StripTime", "S1Annular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","S1Annular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","S1Annular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","S1Annular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","S1Annular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","S1Annular", 0);
+   G4VPrimitiveScorer* ThetaStripPosition               = new AnnularS1ScorerThetaStripNumber("ThetaStripNumber", 0);
+   G4VPrimitiveScorer* PhiStripPosition                 = new AnnularS1ScorerPhiStripNumber("PhiStripNumber", 0);
+
+   //and register it to the multifunctionnal detector
+   m_Scorer->RegisterPrimitive(DetNbr);
+   m_Scorer->RegisterPrimitive(Energy);
+   m_Scorer->RegisterPrimitive(TOF);
+   m_Scorer->RegisterPrimitive(ThetaStripPosition);
+   m_Scorer->RegisterPrimitive(PhiStripPosition);
+   m_Scorer->RegisterPrimitive(InteractionCoordinatesX);
+   m_Scorer->RegisterPrimitive(InteractionCoordinatesY);
+   m_Scorer->RegisterPrimitive(InteractionCoordinatesZ);
+   m_Scorer->RegisterPrimitive(InteractionCoordinatesAngleTheta);
+   m_Scorer->RegisterPrimitive(InteractionCoordinatesAnglePhi);
+
+   //  Add All Scorer to the Global Scorer Manager
+   G4SDManager::GetSDMpointer()->AddNewDetector(m_Scorer);
 }
diff --git a/NPSimulation/src/AnnularS1Scorers.cc b/NPSimulation/src/AnnularS1Scorers.cc
index 83abf5ec33286114a11ccd8312a3113e864052ed..3e566c8c91a741be8b51fc267d66aafadcc51edd 100644
--- a/NPSimulation/src/AnnularS1Scorers.cc
+++ b/NPSimulation/src/AnnularS1Scorers.cc
@@ -19,6 +19,7 @@
  *                                                                           *
  *****************************************************************************/
 
+#include "GeneralScorers.hh"
 #include "AnnularS1Scorers.hh"
 #include "G4UnitsTable.hh"
 #include "AnnularS1.hh"
@@ -33,127 +34,12 @@ using namespace ANNULARS1;
 // scorer provide by G4 don't work this way but using a global ID for each event you should
 // not use those scorer with some G4 provided ones or being very carefull doing so.
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Energy Scorer (deal with multiple particle hit)
-AnnularS1ScorerEnergy::AnnularS1ScorerEnergy(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-}
-
-AnnularS1ScorerEnergy::~AnnularS1ScorerEnergy()
-{
-}
-
-G4bool AnnularS1ScorerEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
-   POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
-
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(index, edep);
-   return TRUE;
-}
-
-void AnnularS1ScorerEnergy::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void AnnularS1ScorerEnergy::EndOfEvent(G4HCofThisEvent*)
-{
-}
-
-void AnnularS1ScorerEnergy::clear()
-{
-   EvtMap->clear();
-}
-
-void AnnularS1ScorerEnergy::DrawAll()
-{
-}
-
-void AnnularS1ScorerEnergy::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
-
-
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Time Scorer
-AnnularS1ScorerTime::AnnularS1ScorerTime(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-}
-
-AnnularS1ScorerTime::~AnnularS1ScorerTime()
-{
-}
-
-G4bool AnnularS1ScorerTime::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   G4double TOF  = aStep->GetPreStepPoint()->GetGlobalTime();
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, TOF);
-   return TRUE;
-}
-
-void AnnularS1ScorerTime::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(),
-         GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void AnnularS1ScorerTime::EndOfEvent(G4HCofThisEvent*)
-{
-}
-
-void AnnularS1ScorerTime::clear()
-{
-   EvtMap->clear();
-}
-
-void AnnularS1ScorerTime::DrawAll()
-{
-}
-
-void AnnularS1ScorerTime::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
-}
-
-
-
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Strip position Scorer
 // Theta
-AnnularS1ScorerThetaStripNumber::AnnularS1ScorerThetaStripNumber(G4String name, G4int depth, G4double StripPlaneSize, G4int NumberOfStrip)
+AnnularS1ScorerThetaStripNumber::AnnularS1ScorerThetaStripNumber(G4String name, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
-   m_StripPlaneSize =   StripPlaneSize ;
-   m_NumberOfStrip    = NumberOfStrip  ;
 }
 
 AnnularS1ScorerThetaStripNumber::~AnnularS1ScorerThetaStripNumber()
@@ -162,6 +48,9 @@ AnnularS1ScorerThetaStripNumber::~AnnularS1ScorerThetaStripNumber()
 
 G4bool AnnularS1ScorerThetaStripNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "S1Annular");
+
    // Hit position in the world frame
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
 
@@ -197,7 +86,7 @@ G4bool AnnularS1ScorerThetaStripNumber::ProcessHits(G4Step* aStep, G4TouchableHi
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, ThetaStripNumber);
+   EvtMap->set(DetNbr + index, ThetaStripNumber);
    return TRUE;
 }
 
@@ -234,11 +123,9 @@ void AnnularS1ScorerThetaStripNumber::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Phi
-AnnularS1ScorerPhiStripNumber::AnnularS1ScorerPhiStripNumber(G4String name, G4int depth, G4double StripPlaneSize, G4int NumberOfStrip)
+AnnularS1ScorerPhiStripNumber::AnnularS1ScorerPhiStripNumber(G4String name, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
-   m_StripPlaneSize =   StripPlaneSize ;
-   m_NumberOfStrip    = NumberOfStrip  ;
 }
 
 AnnularS1ScorerPhiStripNumber::~AnnularS1ScorerPhiStripNumber()
@@ -247,6 +134,9 @@ AnnularS1ScorerPhiStripNumber::~AnnularS1ScorerPhiStripNumber()
 
 G4bool AnnularS1ScorerPhiStripNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "S1Annular");
+
    // Hit position in the world frame
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
 
@@ -268,7 +158,7 @@ G4bool AnnularS1ScorerPhiStripNumber::ProcessHits(G4Step* aStep, G4TouchableHist
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, PhiStripNumber);
+   EvtMap->set(DetNbr + index, PhiStripNumber);
    return TRUE;
 }
 
diff --git a/NPSimulation/src/DetectorConstruction.cc b/NPSimulation/src/DetectorConstruction.cc
index 40f19eadb7511b1c660fe7e035f46dc7bad007da..391bf2f7e364e189107955159c93a9c5b73312d9 100644
--- a/NPSimulation/src/DetectorConstruction.cc
+++ b/NPSimulation/src/DetectorConstruction.cc
@@ -13,9 +13,9 @@
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This Class manage the virtual detector and call their method.            *
- *	Every time a new detector is added to the project, a few line in the     *
- *	ReadConfigurationFile method are needed in order to detect the associate *
- *	token.                                                                   *
+ *  Every time a new detector is added to the project, a few line in the     *
+ *  ReadConfigurationFile method are needed in order to detect the associate *
+ *  token.                                                                   *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
  *                                                                           *
@@ -37,12 +37,14 @@
 #include "G4RotationMatrix.hh"
 
 // Detector class
+#include "DummyDetector.hh"
 #include "MUST2Array.hh"
 #include "GaspardTracker.hh"
 #include "AnnularS1.hh"
 #include "Target.hh"
 #include "ThinSi.hh"
 #include "Plastic.hh"
+
 //Not G4
 #include <cstdlib>
 #include<fstream>
@@ -51,13 +53,14 @@
 DetectorConstruction::DetectorConstruction()
       :  world_log(0), world_phys(0)
 {
-   m_TargetRadius    = 0 ;
-   m_TargetThickness = 0 ;
+   m_Target	= 0;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 DetectorConstruction::~DetectorConstruction()
-{}
+{
+   delete m_Target;
+}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 G4VPhysicalVolume* DetectorConstruction::Construct()
@@ -103,13 +106,13 @@ G4VPhysicalVolume* DetectorConstruction::Construct()
 void DetectorConstruction::AddDetector(VDetector* NewDetector)
 {
    // Add new detector to vector
-   m_Detectors.push_back(NewDetector)        ;
+   m_Detectors.push_back(NewDetector);
    // Initialize Scorer
    NewDetector->InitializeScorers();
    // Construct new detector
-   NewDetector->ConstructDetector(world_log) ;
+   NewDetector->ConstructDetector(world_log);
    // Add Detector to TTree
-   NewDetector->InitializeRootOutput() ;
+   NewDetector->InitializeRootOutput();
    
 }
 
@@ -120,13 +123,14 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
    string LineBuffer;
    string DataBuffer;
 
-   /////////Boolean////////////////////
-   bool MUST2           = false;
-   bool AddThinSi       = false;
-   bool GeneralTarget   = false;
-   bool GPDTracker      = false;	// Gaspard Tracker
-   bool S1              = false;
+   /////////Checking Boolean////////////////////
+   bool cMUST2           = false;
+   bool cAddThinSi       = false;
+   bool cGeneralTarget   = false;
+   bool cGPDTracker      = false;	// Gaspard Tracker
+   bool cS1              = false;
    bool cPlastic         = false;
+   bool cDummy         = false;
    //////////////////////////////////////////////////////////////////////////////////////////
    // added by Nicolas [07/05/09]
    string GlobalPath = getenv("NPTOOL");
@@ -148,11 +152,31 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       //Search for comment Symbol: %
       if (LineBuffer.compare(0, 1, "%") == 0) {   /*Do  Nothing*/;}
 
+			////////////////////////////////////////////
+      /////// Search for a Dummy Detector ////////
+      ////////////////////////////////////////////
+      else if (LineBuffer.compare(0, 16, "TheDUMMYDetector") == 0 && cDummy == false) {
+         cDummy = true ;
+         G4cout << "//////// DUMMY DETECTOR ////////" << G4endl << G4endl   ;
+
+         // Instantiate the new array as a VDetector Object
+         VDetector* myDetector = new DUMMYDetector()                  ;
+
+         // Read Position of detector
+         ConfigFile.close()                                 ;
+         myDetector->ReadConfiguration(Path)                   ;
+         ConfigFile.open(Path.c_str())                      ;
+
+         // Add array to the VDetector Vector
+         AddDetector(myDetector)                            ;
+      }
+
+
       ////////////////////////////////////////////
       //////////// Search for Gaspard ////////////
       ////////////////////////////////////////////
-      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && GPDTracker == false) {
-         GPDTracker = true ;
+      else if (LineBuffer.compare(0, 14, "GaspardTracker") == 0 && cGPDTracker == false) {
+         cGPDTracker = true ;
          G4cout << "//////// Gaspard Tracker ////////" << G4endl   ;
 
          // Instantiate the new array as a VDetector Object
@@ -170,8 +194,8 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       ////////////////////////////////////////////
       ///// Search for S1 Annular detector  //////
       ////////////////////////////////////////////
-      else if (LineBuffer.compare(0, 9, "AnnularS1") == 0 && S1 == false) {
-         S1 = true ;
+      else if (LineBuffer.compare(0, 9, "AnnularS1") == 0 && cS1 == false) {
+         cS1 = true ;
          G4cout << "//////// S1 Annular detector ////////" << G4endl   << G4endl   ;
 
          // Instantiate the new array as a VDetector Object
@@ -189,8 +213,8 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       ////////////////////////////////////////////
       //////// Search for MUST2 Array  ////////
       ////////////////////////////////////////////
-      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && MUST2 == false) {
-         MUST2 = true ;
+      else if (LineBuffer.compare(0, 10, "MUST2Array") == 0 && cMUST2 == false) {
+         cMUST2 = true ;
          G4cout << "//////// MUST2 Array ////////" << G4endl   << G4endl   ;
 
          // Instantiate the new array as a VDetector Object
@@ -208,8 +232,8 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       ////////////////////////////////////////////
       ////////// Search for     ThinSi ///////////
       ////////////////////////////////////////////
-      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && AddThinSi == false) {
-         AddThinSi = true ;
+      else if (LineBuffer.compare(0, 9, "AddThinSi") == 0 && cAddThinSi == false) {
+         cAddThinSi = true ;
          G4cout << "//////// Thin Si ////////" << G4endl << G4endl   ;
 
          // Instantiate the new array as a VDetector Object
@@ -247,26 +271,23 @@ void DetectorConstruction::ReadConfigurationFile(string Path)
       //////////// Search for Target /////////////
       ////////////////////////////////////////////
 
-      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && GeneralTarget == false) {
-         GeneralTarget = true ;
+      else if (LineBuffer.compare(0, 13, "GeneralTarget") == 0 && cGeneralTarget == false) {
+         cGeneralTarget = true ;
          G4cout << "////////// Target ///////////" << G4endl   << G4endl   ;
 
          // Instantiate the new array as a VDetector Objects
-         VDetector* myDetector = new Target()                     ;
+         VDetector* myDetector = new Target();
 
          // Read Position and target specification
-         ConfigFile.close()                                    ;
-         myDetector->ReadConfiguration(Path)                      ;
-         ConfigFile.open(Path.c_str())                         ;
+         ConfigFile.close();
+         myDetector->ReadConfiguration(Path);
+         ConfigFile.open(Path.c_str());
 
-         m_TargetThickness = ((Target*)myDetector)->GetTargetThickness()   ;
-         m_TargetRadius    = ((Target*)myDetector)->GetTargetRadius()   ;
-         m_TargetX        = ((Target*)myDetector)->GetTargetX()         ;
-         m_TargetY        = ((Target*)myDetector)->GetTargetY()         ;
-         m_TargetZ        = ((Target*)myDetector)->GetTargetZ()         ;
+         // Add Target to DetectorConstruction
+         m_Target = (Target*) myDetector;
 
          // Add target to the VDetector Vector
-         AddDetector(myDetector)                               ;
+         AddDetector(myDetector);
       }
 
       //Nothing understandable
diff --git a/NPSimulation/src/DummyDetector.cc b/NPSimulation/src/DummyDetector.cc
new file mode 100644
index 0000000000000000000000000000000000000000..0e4e17d8586e596d56a245c48bd8055fb29c3140
--- /dev/null
+++ b/NPSimulation/src/DummyDetector.cc
@@ -0,0 +1,473 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  This class describe a simple Dummy Detector :                            *
+ *	a simple cylinder of predifined material. user can choose to place it    *
+ *  where he want using spherical coordinate and choose between two naterial *
+ *	                                                                         *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ *  This detector respect all the NPTool convention in naming volume,        * 
+ *  reading scorers and file. Use it as a basis for your own detector        *
+ *****************************************************************************/
+
+// C++ headers
+#include <sstream>
+#include <cmath>
+#include <limits>
+//G4 Geometry object
+#include "G4Tubs.hh"
+
+//G4 sensitive
+#include "G4SDManager.hh"
+#include "G4MultiFunctionalDetector.hh"
+
+//G4 various object
+#include "G4MaterialTable.hh"
+#include "G4Element.hh"
+#include "G4ElementTable.hh"
+#include "G4Transform3D.hh"
+#include "G4PVPlacement.hh"
+#include "G4VisAttributes.hh"
+#include "G4Colour.hh"
+
+// NPTool header
+#include "DummyDetector.hh"
+#include "GeneralScorers.hh"
+#include "RootOutput.h"
+using namespace GENERALSCORERS ;
+// CLHEP header
+#include "CLHEP/Random/RandGauss.h"
+
+using namespace std;
+using namespace CLHEP;
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace DUMMYDETECTOR
+{
+   // Energy and time Resolution
+   const G4double ResoTime    = 4.2      	;// = 10ns of Resolution   //   Unit is MeV/2.35
+   const G4double ResoEnergy  = 5.0   		;// Resolution in %
+
+}
+
+using namespace DUMMYDETECTOR ;
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// DUMMYDetector Specific Method
+DUMMYDetector::DUMMYDetector()
+{
+	InitializeMaterial();
+	m_Event = new TDUMMYDetectorData() ;
+}
+
+DUMMYDetector::~DUMMYDetector()
+{
+	delete m_MaterialDUMMYDetector_material1		; 
+	delete m_MaterialDUMMYDetector_material2	;
+	delete m_DUMMYDetectorScorer						;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void DUMMYDetector::AddDUMMYDetector(	G4double  R        					,
+				        					G4double  Theta    					,
+				         			 		G4double  Phi         			,
+				         			 		G4double	DUMMYDetectorThickness	,
+				         			 		G4double	DUMMYDetectorRadius			,
+				         			 		G4String 	Scintillator			)
+{
+
+  m_R.push_back(R)              									;
+  m_Theta.push_back(Theta)        								;
+  m_Phi.push_back(Phi)          									;
+  m_DUMMYDetectorThickness.push_back(DUMMYDetectorThickness)	;
+ 	m_DUMMYDetectorRadius.push_back(DUMMYDetectorRadius)				;
+ 	m_Scintillator.push_back(Scintillator)					;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Virtual Method of VDetector class
+
+
+// Read stream at Configfile to pick-up parameters of detector (Position,...)
+// Called in DetecorConstruction::ReadDetextorConfiguration Method
+void DUMMYDetector::ReadConfiguration(string Path)
+{
+	ifstream ConfigFile           ;
+	ConfigFile.open(Path.c_str()) ;
+	string LineBuffer          ;
+	string DataBuffer          ;
+
+	G4double Theta = 0 , Phi = 0 , R = 0 , Thickness = 0 , Radius = 0 ;
+	G4String Scintillator ;
+
+	bool check_Theta = false   ;
+	bool check_Phi  = false  ;
+	bool check_R     = false   ;
+	bool check_Thickness = false  		;
+	bool check_Radius = false  			;\
+	bool check_Scintillator = false		;
+	bool ReadingStatus = false ;
+	
+
+ while (!ConfigFile.eof()) 
+ 	{
+      
+	      	getline(ConfigFile, LineBuffer);
+
+			//	If line is a Start Up DUMMYDetector bloc, Reading toggle to true      
+	      	if (LineBuffer.compare(0, 13, "DUMMYDetector") == 0) 
+		      	{
+		        	 G4cout << "///" << G4endl           ;
+		       		  G4cout << "Dummy Module found: " << G4endl   ;        
+		        	 ReadingStatus = true ;
+		        	
+			   	}
+			
+			//	Else don't toggle to Reading Block Status
+			else ReadingStatus = false ;
+			
+			//	Reading Block
+			while(ReadingStatus)
+				{
+						// Pickup Next Word 
+					ConfigFile >> DataBuffer ;
+
+					//	Comment Line 
+					if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
+
+						//	Finding another telescope (safety), toggle out
+					else if (DataBuffer.compare(0, 13, "DUMMYDetector") == 0) {
+						cout << "WARNING: Another Detector is find before standard sequence of Token, Error may occured in Telecope definition" << endl ;
+						ReadingStatus = false ;
+					}
+										
+					//Angle method
+					else if (DataBuffer.compare(0, 6, "THETA=") == 0) {
+						check_Theta = true;
+						ConfigFile >> DataBuffer ;
+						Theta = atof(DataBuffer.c_str()) ;
+						Theta = Theta * deg;
+						cout << "Theta:  " << Theta / deg << endl;
+					}
+
+					else if (DataBuffer.compare(0, 4, "PHI=") == 0) {
+						check_Phi = true;
+						ConfigFile >> DataBuffer ;
+						Phi = atof(DataBuffer.c_str()) ;
+						Phi = Phi * deg;
+						cout << "Phi:  " << Phi / deg << endl;
+					}
+
+					else if (DataBuffer.compare(0, 2, "R=") == 0) {
+						check_R = true;
+						ConfigFile >> DataBuffer ;
+						R = atof(DataBuffer.c_str()) ;
+						R = R * mm;
+						cout << "R:  " << R/mm << endl;
+					}
+					
+					else if (DataBuffer.compare(0, 7, "Radius=") == 0) {
+						check_Radius = true;
+						ConfigFile >> DataBuffer ;
+						Radius = atof(DataBuffer.c_str()) ;
+						Radius = Radius * mm;
+						cout << "DUMMYDetector Radius:  " << Radius/mm << endl;
+					}
+					
+					else if (DataBuffer.compare(0, 10, "Thickness=") == 0) {
+						check_Thickness = true;
+						ConfigFile >> DataBuffer ;
+						Thickness = atof(DataBuffer.c_str()) ;
+						Thickness = Thickness * mm;
+						cout << "DUMMYDetector Thickness:  " << Thickness/mm << endl;
+					}
+					
+					else if (DataBuffer.compare(0, 13, "Material=") == 0) {
+						check_Scintillator = true ;
+						ConfigFile >> DataBuffer ;
+						Scintillator = DataBuffer ;
+						cout << "DUMMYDetector material type:  " << Scintillator << endl;
+					}
+			      
+			     			///////////////////////////////////////////////////
+								//	If no Detector Token and no comment, toggle out
+			         else 
+			         	{ReadingStatus = false; G4cout << "Wrong Token Sequence: Getting out " << DataBuffer << G4endl ;}
+			         
+			         	/////////////////////////////////////////////////
+			         	//	If All necessary information there, toggle out
+			         
+			         if ( check_Theta && check_Phi && check_R && check_Thickness && check_Radius && check_Scintillator) 
+			         	{ 
+		         		  AddDUMMYDetector(	R       		,
+		                  				Theta    		,
+		                  				Phi   			,
+		                  				Thickness		,
+		                  				Radius			,
+		                  				Scintillator		);
+					         
+					        //	Reinitialisation of Check Boolean 
+					        
+							check_Theta = false   			;
+							check_Phi  = false  			;
+							check_R     = false   			;
+							check_Thickness = false  		;
+							check_Radius = false  			;
+							check_Scintillator = false 		;
+							ReadingStatus = false 			;	
+							cout << "///"<< endl ;	         
+			         	}
+			         	
+				}
+	}
+
+}
+
+// Construct detector and inialise sensitive part.
+// Called After DetecorConstruction::AddDetector Method
+void DUMMYDetector::ConstructDetector(G4LogicalVolume* world)
+{
+   	G4ThreeVector Det_pos = G4ThreeVector(0, 0, 0)  ;
+	
+   for (unsigned short i = 0 ; i < m_R.size() ; i++) 
+   	{
+         G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] )   ;
+         G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] )   ;
+         G4double wZ = m_R[i] * cos(m_Theta[i] )             		;
+
+         Det_pos = G4ThreeVector(wX, wY, wZ)                 ;
+//         G4LogicalVolume* logicDUMMYDetector = NULL ;
+			
+		VolumeMaker(Det_pos , i+1, world) ;
+    }
+
+}
+
+void DUMMYDetector::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume* world)
+	{
+		////////////////////////////////////////////////////////////////
+		////////////// Starting Volume Definition //////////////////////
+		////////////////////////////////////////////////////////////////		
+		G4PVPlacement* PVPBuffer ;
+		
+		// Name of the module
+   		std::ostringstream DetectorNumber         			;
+   		DetectorNumber << DetNumber                 	  	;
+		G4String Name = "DUMMYDetector" + DetectorNumber.str()	;
+		
+		int i = DetNumber-1;
+
+		G4Material* DUMMYDetectorMaterial ;
+		
+			 if(m_Scintillator[i] == "material1"    ) DUMMYDetectorMaterial = m_MaterialDUMMYDetector_material1 	;
+		else if(m_Scintillator[i] == "material2"  ) DUMMYDetectorMaterial = m_MaterialDUMMYDetector_material2 	;
+		else {	
+				G4cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl ;
+				G4cout << "WARNING: Material Not found, default material set : material1" << endl ; 
+				G4cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl ;
+				DUMMYDetectorMaterial = m_MaterialDUMMYDetector_material1;
+			}
+		
+		
+		// Definition of the volume containing the sensitive detector
+		if(m_DUMMYDetectorThickness[i]>0 && m_DUMMYDetectorRadius[i]>0)
+			{ 
+				G4Tubs* solidDUMMYDetector = new G4Tubs(	Name					, 
+			                            								0						,
+			                            								m_DUMMYDetectorRadius[i]		,
+			                            								m_DUMMYDetectorThickness[i]/2	,
+			                            								0*deg					, 
+			                            								360*deg					);
+		                            		
+				G4LogicalVolume* logicDUMMYDetector = new G4LogicalVolume(solidDUMMYDetector, DUMMYDetectorMaterial, Name+ "_Scintillator", 0, 0, 0);
+				logicDUMMYDetector->SetSensitiveDetector(m_DUMMYDetectorScorer);
+				
+				G4VisAttributes* PlastVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9)) ;
+   				logicDUMMYDetector->SetVisAttributes(PlastVisAtt) ;
+ 				
+ 				
+			  
+				PVPBuffer = new G4PVPlacement(	0				,
+												Det_pos			,
+		                                     	logicDUMMYDetector    ,
+		                                     	Name  + "_Scintillator"          ,
+		                                     	world           ,
+		                                     	false           ,
+		                                     	0				);	
+		                                     	
+		       
+		                                     	
+			}
+	}
+
+// Add Detector branch to the EventTree.
+// Called After DetecorConstruction::AddDetector Method
+void DUMMYDetector::InitializeRootOutput()
+{
+   RootOutput *pAnalysis = RootOutput::getInstance();
+   TTree *pTree = pAnalysis->GetTree();
+   pTree->Branch("DUMMYDetector", "TDUMMYDetectorData", &m_Event) ;
+}
+
+// Read sensitive part and fill the Root tree.
+// Called at in the EventAction::EndOfEventAvtion
+void DUMMYDetector::ReadSensitive(const G4Event* event)
+{
+   G4String DetectorNumber 	;
+   m_Event->Clear()			;
+   
+//////////////////////////////////////////////////////////////////////////////////////
+//////////////////////// Used to Read Event Map of detector //////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////
+  
+	std::map<G4int, G4int*>::iterator DetectorNumber_itr    ;
+	std::map<G4int, G4double*>::iterator Energy_itr     	;
+	std::map<G4int, G4double*>::iterator Time_itr    		;
+	
+	G4THitsMap<G4int>*	  DetectorNumberHitMap				;      
+	G4THitsMap<G4double>* EnergyHitMap              		;
+	G4THitsMap<G4double>* TimeHitMap             			;
+	
+//////////////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////////////
+
+    // Read the Scorer associate to the Silicon Strip
+    
+	//Detector Number
+	G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("DUMMYDetectorScorer/DUMMYDetectorNumber")  	;
+	DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))       	;
+	DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
+
+	//Energy
+	G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("DUMMYDetectorScorer/Energy")   	;
+	EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           ;
+	Energy_itr = EnergyHitMap->GetMap()->begin()                                                          		;
+
+	//Time of Flight
+	G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("DUMMYDetectorScorer/Time")    		;
+	TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               ;
+	Time_itr = TimeHitMap->GetMap()->begin()                                                              		;
+
+  	G4int sizeN = DetectorNumberHitMap->entries() 	;
+    G4int sizeE = EnergyHitMap->entries() 			;
+    G4int sizeT = TimeHitMap->entries() 			;
+
+    // Loop on DUMMYDetector Number
+    for (G4int l = 0 ; l < sizeN ; l++) {
+        G4int N     =      *(DetectorNumber_itr->second)    ;
+        G4int NTrackID  =   DetectorNumber_itr->first - N  ;
+        
+      
+        if (N > 0) {
+        
+	        m_Event->SetDUMMYDetectorNumber(N) ;
+
+			//  Energy
+	        Energy_itr = EnergyHitMap->GetMap()->begin();
+	        for (G4int h = 0 ; h < sizeE ; h++) {
+	            G4int ETrackID  =   Energy_itr->first  - N      ;
+	            G4double E     = *(Energy_itr->second)      	;
+
+	            if (ETrackID == NTrackID) {
+	                m_Event->SetEnergy(RandGauss::shoot(E, E*ResoEnergy/100./2.35))    ;
+	            }
+	            
+	            Energy_itr++;
+	        	}
+
+
+	        //  Time
+	        Time_itr = TimeHitMap->GetMap()->begin();
+	        for (G4int h = 0 ; h < sizeT ; h++) {
+	            G4int TTrackID  =   Time_itr->first   - N    ;
+	            G4double T     = *(Time_itr->second)      ;
+
+	            if (TTrackID == NTrackID) {
+	                m_Event->SetTime(RandGauss::shoot(T, ResoTime)) ;
+	            }
+	            
+	            Time_itr++;
+	        }
+
+        }
+
+        DetectorNumber_itr++;
+    }
+    
+    // clear map for next event
+    TimeHitMap				->clear()	;    
+    DetectorNumberHitMap    ->clear()	;
+    EnergyHitMap   			->clear() 	; 
+   
+}
+
+////////////////////////////////////////////////////////////////
+void DUMMYDetector::InitializeMaterial()
+	{
+	
+		////////////////////////////////////////////////////////////////
+		/////////////////Element  Definition ///////////////////////////
+		////////////////////////////////////////////////////////////////
+		   G4String symbol               						;
+		   G4double density = 0. , a = 0, z = 0   				;
+		   G4int ncomponents = 0, natoms = 0, fractionmass = 0	;
+
+			// for DUMMYDetector
+		   	G4Element* H   = new G4Element("Hydrogen" 	, symbol = "H"  	, z = 1  , a = 1.01   * g / mole);
+		   	G4Element* C   = new G4Element("Carbon"   	, symbol = "C"  	, z = 6  , a = 12.011 * g / mole);
+		 		G4Element* Pb  = new G4Element("Lead"   	, symbol = "Pb"  	, z = 82 , a = 207.2  * g / mole);
+		////////////////////////////////////////////////////////////////
+		/////////////////Material Definition ///////////////////////////
+		////////////////////////////////////////////////////////////////
+
+
+		   // DUMMYDetector BC-400
+		   density = 1.032 * g / cm3;
+		   m_MaterialDUMMYDetector_material1 = new G4Material("DUMMYDetector_material1", density, ncomponents = 2);
+		   m_MaterialDUMMYDetector_material1->AddElement(H , natoms = 10);
+		   m_MaterialDUMMYDetector_material1->AddElement(C  , natoms = 9);
+		   
+		   // DUMMYDetector BC-452 Pb 2%
+		   density = 1.05 * g / cm3;
+		   m_MaterialDUMMYDetector_material2 = new G4Material("DUMMYDetector_material2", density, ncomponents = 3);
+		   m_MaterialDUMMYDetector_material2->AddElement(H  , natoms = 10);
+		   m_MaterialDUMMYDetector_material2->AddElement(C  , natoms = 9);
+		   m_MaterialDUMMYDetector_material2->AddElement(Pb , fractionmass=2*perCent);
+
+	}
+
+////////////////////////////////////////////////////////////////	
+void DUMMYDetector::InitializeScorers() 
+	{ 
+		m_DUMMYDetectorScorer = new G4MultiFunctionalDetector("DUMMYDetectorScorer") ;
+		G4SDManager::GetSDMpointer()->AddNewDetector(m_DUMMYDetectorScorer);
+		
+		G4VPrimitiveScorer* DetNbr = new PSDetectorNumber("DUMMYDetectorNumber","DUMMYDetector", 0) ;
+		G4VPrimitiveScorer* Energy = new PSEnergy("Energy","DUMMYDetector", 0)             		;
+		G4VPrimitiveScorer* Time   = new PSTOF("Time","DUMMYDetector", 0)             				;
+		 
+		//and register it to the multifunctionnal detector
+		m_DUMMYDetectorScorer->RegisterPrimitive(DetNbr)             				;
+		m_DUMMYDetectorScorer->RegisterPrimitive(Energy)             				;
+		m_DUMMYDetectorScorer->RegisterPrimitive(Time)             					;		
+		
+		
+	}
+////////////////////////////////////////////////////////////////
diff --git a/NPSimulation/src/EventAction.cc b/NPSimulation/src/EventAction.cc
index bba98dd22f7fbad02af7d612dc0336bb2c7f0e87..c370fd39479cd49197bf418c082be2bff02cb6c3 100644
--- a/NPSimulation/src/EventAction.cc
+++ b/NPSimulation/src/EventAction.cc
@@ -53,7 +53,8 @@ EventAction::~EventAction()
 void EventAction::BeginOfEventAction(const G4Event* event)
 {
    if ((event->GetEventID() + 1) % m_printModulo == 0)
-      G4cout << "Event: " << event->GetEventID() + 1 << G4endl ;
+//      G4cout << "Event: " << event->GetEventID() + 1 << G4endl;
+      G4cout << "\rEvent: " << event->GetEventID() + 1 << flush;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/NPSimulation/src/EventGeneratorBeam.cc b/NPSimulation/src/EventGeneratorBeam.cc
index 80550358d291f08d73c13878c1eba3d97df55779..a8c8db2784d1220bd6c98a6e5744e76339d8e86f 100644
--- a/NPSimulation/src/EventGeneratorBeam.cc
+++ b/NPSimulation/src/EventGeneratorBeam.cc
@@ -19,6 +19,10 @@
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
+
+// C++
+#include <limits>
+
 // G4 header
 #include "G4ParticleTable.hh"
 
@@ -37,11 +41,26 @@ using namespace CLHEP;
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 EventGeneratorBeam::EventGeneratorBeam()
 {
-m_InitConditions	= new TInitialConditions()	;
+   m_InitConditions = new TInitialConditions();
+   m_Target         = 0;
 }
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 EventGeneratorBeam::~EventGeneratorBeam()
-{}
+{
+   delete m_InitConditions;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void	EventGeneratorBeam::SetTarget(Target* Target) 
+   {
+   	if(Target!=0)	
+   		{
+   			m_Target = Target;
+   			m_Target->WriteDEDXTable(m_particle ,0, m_BeamEnergy);
+   		}
+   
+   }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void EventGeneratorBeam::ReadConfiguration(string Path)
 {
@@ -86,7 +105,7 @@ void EventGeneratorBeam::ReadConfiguration(string Path)
 			 ReactionFile >> DataBuffer;
 	
       		//Search for comment Symbol %
-      		if (DataBuffer.compare(0, 1, "%") == 0) {/*Do Nothing*/;}
+      		if (DataBuffer.compare(0, 1, "%") == 0) {	ReactionFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
 
 	        else if (DataBuffer.compare(0, 10, "ParticleZ=") == 0) {
 	         	check_Z = true ;
@@ -166,56 +185,49 @@ void EventGeneratorBeam::ReadConfiguration(string Path)
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void EventGeneratorBeam::GenerateEvent(G4Event* anEvent, G4ParticleGun* particleGun)
 {
+			//--------------write the DeDx Table -------------------
+  if(m_Target!=0)
+  	m_Target->WriteDEDXTable(m_particle ,0, m_BeamEnergy+4*m_BeamEnergySpread);
+
+
    m_InitConditions->Clear();
-   // Vertex position and beam angle
-   G4double x0 = 1000 * cm  ;
-   G4double y0 = 1000 * cm  ;
-   G4double Beam_thetaX = 0  ;
-   G4double Beam_phiY   = 0  ;
    
-   //shoot inside the target with correlated angle
-   if (m_TargetRadius != 0) 
-	   	{
-	      while (sqrt(x0*x0 + y0*y0) > m_TargetRadius) 
-	      	{
-	      		RandomGaussian2D(0 , 0 , m_SigmaX , m_SigmaThetaX , x0 , Beam_thetaX );
-	      		RandomGaussian2D(0 , 0 , m_SigmaY , m_SigmaPhiY   , y0 , Beam_phiY   );
-	      	}
-	   	}
-
-   else 
-	   	{
-	     	RandomGaussian2D( 0 , 0 , 0 , m_SigmaThetaX , x0 , Beam_thetaX );
-	     	RandomGaussian2D( 0 , 0 , 0 , m_SigmaPhiY   , y0 , Beam_phiY   );
-	   	}
-
-	 m_InitConditions->SetICIncidentEmittanceTheta(Beam_thetaX / deg);
-     m_InitConditions->SetICIncidentEmittancePhi(Beam_phiY / deg);
-
-
-	// Calculate Angle in spherical coordinate, passing by the direction vector dir	
-	G4double Xdir =  cos( pi/2. - Beam_thetaX ) 							;
-	G4double Ydir =  cos( pi/2. - Beam_phiY   )								;
-	G4double Zdir =  sin( pi/2. - Beam_thetaX ) + sin(  pi/2. - Beam_phiY) 	;
-	
-	G4double Beam_theta = acos ( Zdir / sqrt( Xdir*Xdir + Ydir*Ydir + Zdir*Zdir ) );
-	G4double Beam_phi   = atan2( Ydir , Xdir );
-
-   //must shoot inside the target.
-   G4double z0 = (-m_TargetThickness / 2 + CLHEP::RandFlat::shoot() * m_TargetThickness);
+   ///////////////////////////////////////////////////////////////////////
+   ///// Calculate the incident beam direction as well as the vertex /////
+   ///// of interaction in target and Energy Loss of the beam within /////
+   ///// the target.                                                 /////
+   ///////////////////////////////////////////////////////////////////////
+   G4ThreeVector InterCoord;
+   
+   G4double Beam_thetaX = 0, Beam_phiY = 0;
+   G4double Beam_theta  = 0, Beam_phi  = 0;
+   G4double FinalBeamEnergy = 0 ;
+   G4double InitialBeamEnergy = RandGauss::shoot(m_BeamEnergy, m_BeamEnergySpread);
+   
+	m_Target->CalculateBeamInteraction(	0, m_SigmaX, 0, m_SigmaThetaX,
+                            					0, m_SigmaY, 0, m_SigmaPhiY,
+				                            	InitialBeamEnergy,
+				                            	m_particle,
+				                           	 	InterCoord, Beam_thetaX, Beam_phiY,
+                            					Beam_theta, Beam_phi,
+				                           	 	FinalBeamEnergy);
+				                           	 	
+   // write vertex position to ROOT file
+   G4double x0 = InterCoord.x();
+   G4double y0 = InterCoord.y();
+   G4double z0 = InterCoord.z();
+   m_InitConditions->SetICPositionX(x0);
+   m_InitConditions->SetICPositionY(y0);
+   m_InitConditions->SetICPositionZ(z0);
 
+   // write emittance angles to ROOT file
+   m_InitConditions->SetICIncidentEmittanceTheta(Beam_thetaX / deg);
+   m_InitConditions->SetICIncidentEmittancePhi(Beam_phiY / deg);
 
-   // Move to the target
-   x0 += m_TargetX ;
-   y0 += m_TargetY ;
-   z0 += m_TargetZ ;
-   
    // Store initial value
    m_InitConditions->SetICIncidentAngleTheta(Beam_theta / deg);
    m_InitConditions->SetICIncidentAnglePhi(Beam_phi / deg);
-   m_InitConditions->SetICPositionX(x0);
-   m_InitConditions->SetICPositionY(y0);
-   m_InitConditions->SetICPositionZ(z0);
+
    //////////////////////////////////////////////////
    /////Now define everything for light particle/////
    //////////////////////////////////////////////////
diff --git a/NPSimulation/src/EventGeneratorIsotropic.cc b/NPSimulation/src/EventGeneratorIsotropic.cc
index c60482c0471de284466993cd5090327195323136..b2814747a18ab3633cd2e20d5b7071001c05f624 100644
--- a/NPSimulation/src/EventGeneratorIsotropic.cc
+++ b/NPSimulation/src/EventGeneratorIsotropic.cc
@@ -19,6 +19,9 @@
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
+// C++
+#include<limits>
+
 // G4 headers
 #include "G4ParticleTable.hh"
 
@@ -99,7 +102,7 @@ void EventGeneratorIsotropic::ReadConfiguration(string Path)
 	    		 ReactionFile >> DataBuffer;
 	    	
 	    		 //Search for comment Symbol %
-			     if (DataBuffer.compare(0, 1, "%") == 0) {/*Do Nothing*/;}
+			     if (DataBuffer.compare(0, 1, "%") == 0) {	ReactionFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
 
 		         else if (DataBuffer.compare(0, 10, "EnergyLow=") == 0) {
 		         	check_EnergyLow = true ;
diff --git a/NPSimulation/src/EventGeneratorTransfert.cc b/NPSimulation/src/EventGeneratorTransfert.cc
index ac23197ec7b61b62d0c3cb0cb81c66e63c10242f..e30585f7f0bace34e7f3eeea56fda8ba6e05d8da 100644
--- a/NPSimulation/src/EventGeneratorTransfert.cc
+++ b/NPSimulation/src/EventGeneratorTransfert.cc
@@ -24,6 +24,7 @@
 // C++ headers
 #include <iostream>
 #include <fstream>
+#include <limits>
 
 // G4 header defining G4 types
 #include "globals.hh"
@@ -48,19 +49,33 @@ using namespace CLHEP;
 EventGeneratorTransfert::EventGeneratorTransfert()
 {
    //------------- Default Constructor -------------
-   m_InitConditions	= new TInitialConditions()	;
-   m_Reaction = new Reaction()					;
-
-   m_BeamEnergy       = 0;
-   m_BeamEnergySpread = 0;
-   m_SigmaX        = 0;
-   m_SigmaY        = 0;
-   m_SigmaThetaX      = 0;
-   m_SigmaPhiY=0 ;
-   m_ShootLight       = 0;
-   m_ShootHeavy       = 0;
+   m_InitConditions	= new TInitialConditions();
+   m_Reaction 		= new Reaction();
+   m_Target		= 0;
+
+   m_BeamEnergy		= 0;
+   m_BeamEnergySpread	= 0;
+   m_SigmaX		= 0;
+   m_SigmaY		= 0;
+   m_SigmaThetaX	= 0;
+   m_SigmaPhiY		= 0;
+   m_ShootLight		= 0;
+   m_ShootHeavy		= 0;
 }
 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void EventGeneratorTransfert::SetTarget(Target* Target) 
+{
+   if (Target != 0) {
+      m_Target = Target;
+      G4int LightZ = m_Reaction->GetNucleus3()->GetZ();
+      G4int LightA = m_Reaction->GetNucleus3()->GetA();
+      m_Target->WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(LightZ,LightA, 0.) ,0, m_BeamEnergy);
+   }
+}
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 EventGeneratorTransfert::~EventGeneratorTransfert()
 {
@@ -173,7 +188,7 @@ while(ReadingStatus){
  			 ReactionFile >> DataBuffer;
  			 
  			 //Search for comment Symbol %
-	      	 if (DataBuffer.compare(0, 1, "%") == 0) {/* Do Nothing */;}
+	      	 if (DataBuffer.compare(0, 1, "%") == 0) {	ReactionFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
  			 
 	         else if (DataBuffer.compare(0, 5, "Beam=") == 0) {
 	         	check_Beam = true ;
@@ -313,56 +328,87 @@ while(ReadingStatus){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* particleGun)
 {	
+	//	If first time, write the DeDx table
+	if(anEvent->GetEventID()==0)
+		{
+			//-------------- Before living, wrtie the DeDx Table -------------------
+
+			G4int LightZx = m_Reaction->GetNucleus3()->GetZ() ;
+		  G4int LightAx = m_Reaction->GetNucleus3()->GetA() ;
+		  
+		  G4int BeamZx = m_Reaction->GetNucleus1()->GetZ() ;
+		  G4int BeamAx = m_Reaction->GetNucleus1()->GetA() ;
+		  
+		  if(m_Target!=0)
+		  	{
+		  		m_Target->WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(LightZx,LightAx, 0.) ,0, m_BeamEnergy+4*m_BeamEnergySpread);
+		  		m_Target->WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(BeamZx,BeamAx, 0.) ,0, m_BeamEnergy+4*m_BeamEnergySpread);
+		  	}
+		
+		}
+
+
+
    // Clear contents of Precedent event (now stored in ROOTOutput)
    m_InitConditions->Clear();
 
    //////////////////////////////////////////////////
    //////Define the kind of particle to shoot////////
    //////////////////////////////////////////////////
+   // Light
    G4int LightZ = m_Reaction->GetNucleus3()->GetZ() ;
    G4int LightA = m_Reaction->GetNucleus3()->GetA() ;
 
    G4ParticleDefinition* LightName
    = G4ParticleTable::GetParticleTable()->GetIon(LightZ, LightA, 0.);
 
+   // Recoil
    G4int HeavyZ = m_Reaction->GetNucleus4()->GetZ() ;
    G4int HeavyA = m_Reaction->GetNucleus4()->GetA() ;
 
    G4ParticleDefinition* HeavyName
    = G4ParticleTable::GetParticleTable()->GetIon(HeavyZ, HeavyA, m_Reaction->GetExcitation()*MeV);
 
-   // Vertex position and beam angle inte world frame
-   G4double x0 = 1000 * cm  	;
-   G4double y0 = 1000 * cm  	;
-   G4double Beam_thetaX = 0  	;
-   G4double Beam_phiY   = 0  	;
+   // Beam
+   G4int BeamZ = m_Reaction->GetNucleus1()->GetZ();
+   G4int BeamA = m_Reaction->GetNucleus1()->GetA();
+   G4ParticleDefinition* BeamName = G4ParticleTable::GetParticleTable()->GetIon(BeamZ, BeamA, 0);
+
+   ///////////////////////////////////////////////////////////////////////
+   ///// Calculate the incident beam direction as well as the vertex /////
+   ///// of interaction in target and Energy Loss of the beam within /////
+   ///// the target.                                                 /////
+   ///////////////////////////////////////////////////////////////////////
+   G4ThreeVector InterCoord;
    
-   //shoot inside the target with correlated angle
-   if (m_TargetRadius != 0) {
-      while (sqrt(x0*x0 + y0*y0) > m_TargetRadius) {
-         RandomGaussian2D(0, 0, m_SigmaX, m_SigmaThetaX, x0, Beam_thetaX);
-         RandomGaussian2D(0, 0, m_SigmaY, m_SigmaPhiY  , y0, Beam_phiY  );
-      }
-   }
-   else {
-      RandomGaussian2D(0,0,0,m_SigmaThetaX,x0,Beam_thetaX);
-      RandomGaussian2D(0,0,0,m_SigmaPhiY  ,y0,Beam_phiY  );
-   }
+   G4double Beam_thetaX = 0, Beam_phiY = 0;
+   G4double Beam_theta  = 0, Beam_phi  = 0;
+   G4double FinalBeamEnergy = 0 ;
+   G4double InitialBeamEnergy = RandGauss::shoot(m_BeamEnergy, m_BeamEnergySpread);
+   
+   m_Target->CalculateBeamInteraction(0, m_SigmaX, 0, m_SigmaThetaX,
+                                      0, m_SigmaY, 0, m_SigmaPhiY,
+				      InitialBeamEnergy,
+				      BeamName,
+				      InterCoord, Beam_thetaX, Beam_phiY,
+                                      Beam_theta, Beam_phi,
+				      FinalBeamEnergy);
+				                           	 	
+   m_Reaction->SetBeamEnergy(FinalBeamEnergy);
+   m_InitConditions->SetICIncidentEnergy(FinalBeamEnergy / MeV);
+  
+   // write vertex position to ROOT file
+   G4double x0 = InterCoord.x();
+   G4double y0 = InterCoord.y();
+   G4double z0 = InterCoord.z();
+   m_InitConditions->SetICPositionX(x0);//
+   m_InitConditions->SetICPositionY(y0);//
+   m_InitConditions->SetICPositionZ(z0);//
 
    // write emittance angles to ROOT file
    m_InitConditions->SetICIncidentEmittanceTheta(Beam_thetaX / deg);
    m_InitConditions->SetICIncidentEmittancePhi(Beam_phiY / deg);
 
-   // Calculate Angle in spherical coordinate, passing by the direction vector dir	
-   G4double Xdir =  cos(pi/2. - Beam_thetaX);
-   G4double Ydir =  cos(pi/2. - Beam_phiY  );
-   G4double Zdir =  sin(pi/2. - Beam_thetaX) + sin(pi/2. - Beam_phiY);	
-	
-   G4double Beam_theta = acos(Zdir / sqrt(Xdir*Xdir + Ydir*Ydir + Zdir*Zdir)) * rad;
-   G4double Beam_phi   = atan2(Ydir, Xdir) * rad;
-   if (Beam_phi   < 0)    Beam_phi += 2*pi;
-   if (Beam_theta < 1e-6) Beam_phi  = 0;
-
    // write angles to ROOT file
    m_InitConditions->SetICIncidentAngleTheta(Beam_theta / deg);
    m_InitConditions->SetICIncidentAnglePhi(Beam_phi / deg);
@@ -386,11 +432,7 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa
    ///// Angles for emitted particles following Cross Section //////
    ///// Angles are in the beam frame                         //////
    /////////////////////////////////////////////////////////////////
-   // Beam incident energy
-   G4double NominalBeamEnergy = m_BeamEnergy;
-   G4double IncidentBeamEnergy = RandGauss::shoot(NominalBeamEnergy, m_BeamEnergySpread / 2.35);
-   m_Reaction->SetBeamEnergy(IncidentBeamEnergy);
-   m_InitConditions->SetICIncidentEnergy(IncidentBeamEnergy / MeV);
+
    // Angles
    RandGeneral CrossSectionShoot(m_Reaction->GetCrossSection(), m_Reaction->GetCrossSectionSize());
    G4double ThetaCM = CrossSectionShoot.shoot() * (180*deg);
@@ -421,18 +463,6 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa
    // write angles/energy to ROOT file
    m_InitConditions->SetICEmittedAngleThetaLabIncidentFrame(ThetaLight / deg);
    m_InitConditions->SetICEmittedEnergy(EnergyLight/MeV);
-   //must shoot inside the target.
-   G4double z0 = (-m_TargetThickness / 2 + RandFlat::shoot() * m_TargetThickness);
-
-   // Move to the target
-   x0 += m_TargetX ;
-   y0 += m_TargetY ;
-   z0 += m_TargetZ ;
-
-   // write vertex position to ROOT file
-   m_InitConditions->SetICPositionX(x0);
-   m_InitConditions->SetICPositionY(y0);
-   m_InitConditions->SetICPositionZ(z0);
 
    //////////////////////////////////////////////////
    ///////// Set up everything for shooting /////////
@@ -455,16 +485,13 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa
       // write angles in ROOT file
       m_InitConditions->SetICEmittedAngleThetaLabWorldFrame(theta_world / deg);
       m_InitConditions->SetICEmittedAnglePhiWorldFrame(phi_world / deg);
-      // tests
-//      G4cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" << G4endl;
-//      G4cout << "cinematique dans ref world : " << G4endl;
-//      G4cout << "\t" << momentum_kine_world << G4endl;
+      
       //Set the gun to shoot
       particleGun->SetParticleMomentumDirection(momentum_kine_world);
       //Shoot the light particle
       particleGun->GeneratePrimaryVertex(anEvent);
    }
-   if (m_ShootHeavy) { // Case of recoil particle
+   if (m_ShootHeavy) { // Case of heavy particle
       // Particle type
       particleGun->SetParticleDefinition(HeavyName);
       // Particle energy
@@ -491,36 +518,30 @@ void EventGeneratorTransfert::GenerateEvent(G4Event* anEvent , G4ParticleGun* pa
 
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void EventGeneratorTransfert::SetEverything(string name1             ,        // Beam nuclei
-		             string name2             ,        // Target nuclei
-		             string name3             ,        // Product of reaction
-		             string name4             ,        // Product of reaction
-		             double BeamEnergy        ,        // Beam Energy
-		             double ExcitationEnergy  ,        // Excitation of Heavy Nuclei
-		             double BeamEnergySpread  ,
-		             double SigmaX         ,
-		             double SigmaY         ,
-		             double SigmaThetaX       ,
-		             double SigmaPhiY  ,
-		             bool   ShootLight        ,
-		             bool   ShootHeavy        ,
-		             string Path) 
+void EventGeneratorTransfert::SetEverything(string name1,		// Beam nuclei
+                                            string name2,		// Target nuclei
+                                            string name3,		// Product of reaction
+                                            string name4,		// Product of reaction
+                                            double BeamEnergy,		// Beam Energy
+                                            double ExcitationEnergy,	// Excitation of Heavy Nuclei
+                                            double BeamEnergySpread,
+                                            double SigmaX,
+                                            double SigmaY,
+                                            double SigmaThetaX,
+                                            double SigmaPhiY,
+                                            bool   ShootLight,
+                                            bool   ShootHeavy,
+                                            string Path) 
 {
-   m_Reaction = new Reaction(	name1					, 
-				name2					,
-	 			name3					,
-	 			name4					,
-				BeamEnergy 				,
-				ExcitationEnergy				,
-				Path 					);	
+   m_Reaction = new Reaction(name1, name2, name3, name4, BeamEnergy, ExcitationEnergy, Path);	
 		
-   m_BeamEnergy       =  BeamEnergy        ;
-   m_BeamEnergySpread =  BeamEnergySpread  ;
-   m_SigmaX        =  SigmaX         ;
-   m_SigmaY        =  SigmaY         ;
-   m_SigmaThetaX      =  SigmaThetaX       ;
-   m_SigmaPhiY      =  SigmaPhiY      ;
-   m_ShootLight       =  ShootLight        ;
-   m_ShootHeavy       =  ShootHeavy        ;
+   m_BeamEnergy       =  BeamEnergy;
+   m_BeamEnergySpread =  BeamEnergySpread;
+   m_SigmaX           =  SigmaX;
+   m_SigmaY           =  SigmaY;
+   m_SigmaThetaX      =  SigmaThetaX;
+   m_SigmaPhiY        =  SigmaPhiY;
+   m_ShootLight       =  ShootLight;
+   m_ShootHeavy       =  ShootHeavy;
 }
-
+ 
diff --git a/NPSimulation/src/EventGeneratorTransfertToResonance.cc b/NPSimulation/src/EventGeneratorTransfertToResonance.cc
index 500f81a12976323bb12185a0ef53c0798dd98ea4..270f2eadae742b4d751c5211cbee822406692ce2 100644
--- a/NPSimulation/src/EventGeneratorTransfertToResonance.cc
+++ b/NPSimulation/src/EventGeneratorTransfertToResonance.cc
@@ -14,17 +14,18 @@
  * Decription:                                                               *
  *  This event Generator is used to simulated two body TransfertReaction.    *
  *  A Phase Space calculation is then performed to decay the Heavy product.  *
- *	The TGenPhaseSpace from ROOT is used to calculate a phase space decay    *
- *	with flat distribution	                                                 *
+ *  The TGenPhaseSpace from ROOT is used to calculate a phase space decay    *
+ *  with flat distribution	                                             *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
- *   									                                     *
+ *   									     *
  *                                                                           *
  *****************************************************************************/
 
 // C++ headers
 #include <iostream>
 #include <fstream>
+#include <limits>
 
 // G4 header defining G4 types
 #include "globals.hh"
@@ -56,6 +57,7 @@ EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance()
    //------------- Default Constructor -------------
 	m_InitConditions	= new TInitialConditions()	;
 	m_Reaction = new Reaction() ;
+	m_Target = new Target();
 	m_SigmaX       		=  0 ;
 	m_SigmaY       		=  0 ;
 	m_SigmaThetaX     =  0 ;
@@ -67,11 +69,16 @@ EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance()
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 EventGeneratorTransfertToResonance::~EventGeneratorTransfertToResonance()
 {
-   //------------- Default Destructor ------------
+  //------------- Default Destructor ------------
 	delete m_InitConditions;
 	delete m_Reaction ;
 }
-
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+void	EventGeneratorTransfertToResonance::SetTarget(Target* Target) 
+   {
+   	if(Target!=0)	
+   			m_Target = Target;
+   }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 EventGeneratorTransfertToResonance::EventGeneratorTransfertToResonance(	  string  	name1          		,
 																	      string   	name2          		,
@@ -189,7 +196,7 @@ while(ReadingStatus){
  			 ReactionFile >> DataBuffer;
  			 
  			 //Search for comment Symbol %
-	      	 if (DataBuffer.compare(0, 1, "%") == 0) {/* Do Nothing */;}
+	      	 if (DataBuffer.compare(0, 1, "%") == 0) {	ReactionFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
  			 
 	         else if (DataBuffer.compare(0, 5, "Beam=") == 0) {
 	         	check_Beam = true ;
@@ -257,14 +264,14 @@ while(ReadingStatus){
 	        else if  (DataBuffer.compare(0, 19, "SigmaThetaX=") == 0) {
 	        	check_EmmitanceTheta = true ;
 	            ReactionFile >> DataBuffer;
-	            SigmaThetaX = atof(DataBuffer.c_str()) * rad;
+	            SigmaThetaX = atof(DataBuffer.c_str()) * deg;
 	            G4cout << "Beam Emmitance Theta " << SigmaThetaX / deg << " deg" << G4endl;
 	         }
 	         
 	        else if  (DataBuffer.compare(0, 17, "SigmaPhiY=") == 0) {
 	        	check_EmmitancePhi = true ;
 	            ReactionFile >> DataBuffer;
-	            SigmaPhiY = atof(DataBuffer.c_str()) * rad;
+	            SigmaPhiY = atof(DataBuffer.c_str()) * deg;
 	            G4cout << "Beam Emmitance Phi " << SigmaPhiY / deg << " deg" << G4endl;
 	         }
 
@@ -363,24 +370,51 @@ while(ReadingStatus){
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4ParticleGun* particleGun)
 {
+
+	//	If first time, write the DeDx table
+	if(anEvent->GetEventID()==0)
+		{
+			//-------------- Before living, wrtie the DeDx Table -------------------
+
+			G4int LightZx = m_Reaction->GetNucleus3()->GetZ() ;
+		  G4int LightAx = m_Reaction->GetNucleus3()->GetA() ;
+		  
+		  G4int BeamZx = m_Reaction->GetNucleus1()->GetZ() ;
+		  G4int BeamAx = m_Reaction->GetNucleus1()->GetA() ;
+		  
+		  if(m_Target!=0)
+		  	{
+		  		m_Target->WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(LightZx,LightAx, 0.) ,0, m_BeamEnergy+4*m_BeamEnergySpread);
+		  		m_Target->WriteDEDXTable(G4ParticleTable::GetParticleTable()->GetIon(BeamZx,BeamAx, 0.) ,0, m_BeamEnergy+4*m_BeamEnergySpread);
+		  	}
+		
+		}
+
    // Clear contents of Precedent event (now stored in ROOTOutput)
    m_InitConditions->Clear();
 
    //////////////////////////////////////////////////
    //////Define the kind of particle to shoot////////
    //////////////////////////////////////////////////
+   // Light
    G4int LightZ = m_Reaction->GetNucleus3()->GetZ() ;
    G4int LightA = m_Reaction->GetNucleus3()->GetA() ;
 
    G4ParticleDefinition* LightName
    = G4ParticleTable::GetParticleTable()->GetIon(LightZ, LightA, 0.);
 
+   // Recoil
    G4int HeavyZ = m_Reaction->GetNucleus4()->GetZ() ;
    G4int HeavyA = m_Reaction->GetNucleus4()->GetA() ;
 
    G4ParticleDefinition* HeavyName
    = G4ParticleTable::GetParticleTable()->GetIon(HeavyZ, HeavyA, m_Reaction->GetExcitation()*MeV);
 
+   // Beam
+   G4int BeamZ = m_Reaction->GetNucleus1()->GetZ();
+   G4int BeamA = m_Reaction->GetNucleus1()->GetA();
+   G4ParticleDefinition* BeamName = G4ParticleTable::GetParticleTable()->GetIon(BeamZ, BeamA, 0);
+
    // Shoot the Resonance energy following the mean and width value
    double EXX = -10 ;
    
@@ -389,37 +423,42 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
 
 	m_Reaction->SetExcitation( EXX  );
 
-   // Vertex position and beam angle inte world frame
-   G4double x0 = 1000 * cm  	;
-   G4double y0 = 1000 * cm  	;
-   G4double Beam_thetaX = 0  	;
-   G4double Beam_phiY   = 0  	;
+	 ///////////////////////////////////////////////////////////////////////
+   ///// Calculate the incident beam direction as well as the vertex /////
+   ///// of interaction in target and Energy Loss of the beam within /////
+   ///// the target.                                                 /////
+   ///////////////////////////////////////////////////////////////////////
+   G4ThreeVector InterCoord;
    
-   //shoot inside the target with correlated angle
-   if (m_TargetRadius != 0) {
-      while (sqrt(x0*x0 + y0*y0) > m_TargetRadius) {
-         RandomGaussian2D(0, 0, m_SigmaX, m_SigmaThetaX, x0, Beam_thetaX);
-         RandomGaussian2D(0, 0, m_SigmaY, m_SigmaPhiY  , y0, Beam_phiY  );
-      }
-   }
-   else {
-      RandomGaussian2D(0,0,0,m_SigmaThetaX,x0,Beam_thetaX);
-      RandomGaussian2D(0,0,0,m_SigmaPhiY  ,y0,Beam_phiY  );
-   }
+   G4double Beam_thetaX = 0, Beam_phiY = 0;
+   G4double Beam_theta  = 0, Beam_phi  = 0;
+   G4double FinalBeamEnergy = 0 ;
+   G4double InitialBeamEnergy = RandGauss::shoot(m_BeamEnergy, m_BeamEnergySpread);
+   
+	m_Target->CalculateBeamInteraction(	0, m_SigmaX, 0, m_SigmaThetaX,
+                            					0, m_SigmaY, 0, m_SigmaPhiY,
+				                            	InitialBeamEnergy,
+				                            	BeamName,
+				                           	 	InterCoord, Beam_thetaX, Beam_phiY,
+                            					Beam_theta, Beam_phi,
+				                           	 	FinalBeamEnergy);
+				                           	 	
+	m_Reaction->SetBeamEnergy(FinalBeamEnergy);
+  m_InitConditions->SetICIncidentEnergy(FinalBeamEnergy / MeV);
+  
+
+   // write vertex position to ROOT file
+   G4double x0 = InterCoord.x();
+   G4double y0 = InterCoord.y();
+   G4double z0 = InterCoord.z();
+   m_InitConditions->SetICPositionX(x0);
+   m_InitConditions->SetICPositionY(y0);
+   m_InitConditions->SetICPositionZ(z0);
 
    // write emittance angles to ROOT file
    m_InitConditions->SetICIncidentEmittanceTheta(Beam_thetaX / deg);
    m_InitConditions->SetICIncidentEmittancePhi(Beam_phiY / deg);
 
-   // Calculate Angle in spherical coordinate, passing by the direction vector dir	
-   G4double Xdir =  cos(pi/2. - Beam_thetaX);
-   G4double Ydir =  cos(pi/2. - Beam_phiY  );
-   G4double Zdir =  sin(pi/2. - Beam_thetaX) + sin(pi/2. - Beam_phiY);	
-	
-   G4double Beam_theta = acos(Zdir / sqrt(Xdir*Xdir + Ydir*Ydir + Zdir*Zdir)) * rad;
-   G4double Beam_phi   = atan2(Ydir, Xdir) * rad;
-   if (Beam_phi < 0) Beam_phi += 2*pi;
-
    // write angles to ROOT file
    m_InitConditions->SetICIncidentAngleTheta(Beam_theta / deg);
    m_InitConditions->SetICIncidentAnglePhi(Beam_phi / deg);
@@ -475,22 +514,6 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
                                          sin(ThetaHeavy) * sin(phi),
                                          cos(ThetaHeavy));
 
-   // write angles/energy to ROOT file
-   m_InitConditions->SetICEmittedAngleThetaLabIncidentFrame(ThetaLight / deg);
-   m_InitConditions->SetICEmittedEnergy(EnergyLight/MeV);
-   //must shoot inside the target.
-   G4double z0 = (-m_TargetThickness / 2 + RandFlat::shoot() * m_TargetThickness);
-
-   // Move to the target
-   x0 += m_TargetX ;
-   y0 += m_TargetY ;
-   z0 += m_TargetZ ;
-
-   // write vertex position to ROOT file
-   m_InitConditions->SetICPositionX(x0);
-   m_InitConditions->SetICPositionY(y0);
-   m_InitConditions->SetICPositionZ(z0);
-
    //////////////////////////////////////////////////
    ///////// Set up everything for shooting /////////
    //////////////////////////////////////////////////
@@ -512,14 +535,17 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
       // write angles in ROOT file
       m_InitConditions->SetICEmittedAngleThetaLabWorldFrame(theta_world / deg);
       m_InitConditions->SetICEmittedAnglePhiWorldFrame(phi_world / deg);
+         // write angles/energy to ROOT file
+   		m_InitConditions->SetICEmittedAngleThetaLabIncidentFrame(ThetaLight / deg);
+   		m_InitConditions->SetICEmittedEnergy(EnergyLight/MeV);
       //Set the gun to shoot
       particleGun->SetParticleMomentumDirection(momentum_kine_world);
       //Shoot the light particle
       particleGun->GeneratePrimaryVertex(anEvent);
    }
    
-   if (m_ShootHeavy) { // Case of recoil particle
-      // Particle type
+   // Case of recoil particle
+   /*   // Particle type
       particleGun->SetParticleDefinition(HeavyName);
       // Particle energy
       particleGun->SetParticleEnergy(EnergyHeavy);
@@ -527,7 +553,7 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
       particleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0));
       // Particle direction
       // Kinematical angles in the beam frame are transformed 
-      // to the "world" frame
+      // to the "world" frame*/
       G4ThreeVector momentum_kine_world = BeamToWorld * momentum_kineHeavy_beam;
       // get theta and phi in the world frame
       G4double theta_world = momentum_kine_world.theta();
@@ -543,7 +569,7 @@ void EventGeneratorTransfertToResonance::GenerateEvent(G4Event* anEvent , G4Part
       														anEvent        	,
       														particleGun		);
       
-   }
+   
 }
 
 
@@ -587,89 +613,114 @@ void EventGeneratorTransfertToResonance::ResonanceDecay(  G4double EnergyHeavy
 		G4double md = daughter -> GetPDGMass()     ;
 		G4double mn = neutron  -> GetPDGMass()     ;
 		G4double mp = proton   -> GetPDGMass()     ;
-
-		G4double Q  =  M - md - mn * NumberOfNeutrons - mp * NumberOfProtons    ;
-
-		vector<G4double> DecayProductsMomentumCM  ;
-		vector<G4double> DecayProductsMomentumXCM ;
-		vector<G4double> DecayProductsMomentumYCM ;
-		vector<G4double> DecayProductsMomentumZCM ;
-		vector<G4double> DecayProductsThetaCM     ;
-		vector<G4double> DecayProductsPhiCM       ;
-
-		// Initial Lab Momentum
-		G4double InitialE      	  = sqrt(EnergyHeavy * EnergyHeavy + M * M)   		;
-		G4double InitialMomentumX = EnergyHeavy * sin(ThetaHeavy) * cos(PhiHeavy) 	;
-		G4double InitialMomentumY = EnergyHeavy * sin(ThetaHeavy) * sin(PhiHeavy) 	;
-		G4double InitialMomentumZ = EnergyHeavy * cos(ThetaHeavy)                 	;
+		
+		G4double InitialE      	  = EnergyHeavy + M   			;
+		G4double InitialMomentumX = sqrt( InitialE*InitialE - M*M) * sin(ThetaHeavy) * cos(PhiHeavy) 		;
+		G4double InitialMomentumY = sqrt( InitialE*InitialE - M*M) * sin(ThetaHeavy) * sin(PhiHeavy) 		;
+		G4double InitialMomentumZ = sqrt( InitialE*InitialE - M*M) * cos(ThetaHeavy)                 		;
 
 		TLorentzVector Initial = TLorentzVector(InitialMomentumX/GeV, InitialMomentumY/GeV, InitialMomentumZ/GeV,InitialE/GeV);
 
 		// Array of masses express in GeV/c2
 		double* masses = new double[NumberOfDecayProducts+1];
 
-			//	Filling Array
+		//	Filling Array
 		masses[0] = md/GeV ;
-
+	
 		int ll = 1 ;
 		for(int i = 0 ; i < NumberOfNeutrons ; i++)
 				{masses[ll] = mn/GeV ; ll++;}
 				
 		for(int i = 0 ; i < NumberOfProtons ; i++)
 				{masses[ll] = mp/GeV ; ll++;}
-
+				
 		// Instentiate a Phase Space Generator, with flat distrution
-
-		  
 		TGenPhaseSpace TPhaseSpace ;
 
-		if( !TPhaseSpace.SetDecay(Initial, NumberOfDecayProducts+1, masses,"Fermi") ) cout << "Warning: Phase Space Decay forbiden by kinematic";
-		TPhaseSpace.Generate() ;
-		
-		TLorentzVector* daugterLV = TPhaseSpace.GetDecay(0);
-		G4ThreeVector Momentum = G4ThreeVector(	daugterLV->X()*GeV	,
-												daugterLV->Y()*GeV	,
-												daugterLV->Z()*GeV 	);		
-		double Energy   = Momentum.mag() ;
-		Momentum.unit() ;
-		//Set the gun to shoot
-		particleGun->SetParticleDefinition(daughter)                    ;
-		particleGun->SetParticleMomentumDirection(Momentum)     		;
-		particleGun->SetParticleEnergy(Energy)                          ;
-		particleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0))     ;
-		// Shoot the Daugter
-		particleGun->GeneratePrimaryVertex(anEvent) ;
+		if( !TPhaseSpace.SetDecay(Initial, NumberOfDecayProducts+1, masses) ) cout << "Warning: Phase Space Decay forbiden by kinematic, or more than 18 particles "<<endl;
+		double MaxWt=TPhaseSpace.GetWtMax() ;
+		double Weight = 0 	;
+		double Rand   = 1	; 
 
+		while( Rand > Weight )
+			{  
+				Weight = TPhaseSpace.Generate() 		;
+				Rand = CLHEP::RandFlat::shoot()*MaxWt	; 
+			}
+		
+		
+		TLorentzVector* daugterLV ;
+		double Energy;
+		G4ThreeVector Momentum;
+		 if (m_ShootHeavy) 
+		 	{
+		 		daugterLV = TPhaseSpace.GetDecay(0);
+		 	
+		 		Momentum = G4ThreeVector(	daugterLV->X()*GeV	,
+											daugterLV->Y()*GeV	,
+											daugterLV->Z()*GeV 	);				
+		
+				Energy   = daugterLV->E()*GeV-md ;
+				Momentum.unit() ;		 	
+		 	
+				//Set the gun to shoot
+				particleGun->SetParticleDefinition(daughter)                    ;
+				particleGun->SetParticleMomentumDirection(Momentum)     		;
+				particleGun->SetParticleEnergy(Energy)                          ;
+				particleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0))     ;
+				// Shoot the Daugter
+				particleGun->GeneratePrimaryVertex(anEvent) ;
+				
+			   // get theta and phi in the world frame
+		       G4double theta_world = Momentum.theta();
+		       G4double phi_world   = Momentum.phi();
+		       if (phi_world < 1e-6) phi_world += 2*pi;
+		       // write angles in ROOT file
+		       m_InitConditions->SetICEmittedAngleThetaLabWorldFrame(theta_world / deg);
+		       m_InitConditions->SetICEmittedAnglePhiWorldFrame(phi_world / deg);		
+			   m_InitConditions->SetICEmittedEnergy(Energy);
+			}
+		
 		if (m_ShootDecayProduct) 
 			{
 				G4int jj = 1   ;
 				for ( int u = 0; u < NumberOfNeutrons ; u++) 
 					{
-						TLorentzVector* neutronLV = TPhaseSpace.GetDecay(jj);
+						daugterLV = TPhaseSpace.GetDecay(jj);
 
 						Momentum = G4ThreeVector(	daugterLV->X()*GeV	,
 													daugterLV->Y()*GeV	,
 													daugterLV->Z()*GeV 	);
-						Energy   = Momentum.mag() ;
+						Energy   = daugterLV->E()*GeV-mn ;
 						Momentum.unit() ;
 						//Set the gun to shoot
-						particleGun->SetParticleDefinition(neutron)                    ;
+						particleGun->SetParticleDefinition(neutron)                    	;
 						particleGun->SetParticleMomentumDirection(Momentum)     		;
 						particleGun->SetParticleEnergy(Energy)                          ;
 						particleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0))     ;
 						// Shoot the Daugter
 						particleGun->GeneratePrimaryVertex(anEvent) ;
+						
+						// get theta and phi in the world frame
+						G4double theta_world = Momentum.theta();
+						G4double phi_world   = Momentum.phi();
+						if (phi_world < 1e-6) phi_world += 2*pi;
+						// write angles in ROOT file
+						m_InitConditions->SetICEmittedAngleThetaLabWorldFrame(theta_world / deg);
+						m_InitConditions->SetICEmittedAnglePhiWorldFrame(phi_world / deg);		
+						m_InitConditions->SetICEmittedEnergy(Energy);
+						
 						jj++;
 					}
 				
 				for ( int u = 0; u < NumberOfProtons ; u++) 
 					{
-						TLorentzVector* protonLV = TPhaseSpace.GetDecay(jj);
+						daugterLV = TPhaseSpace.GetDecay(jj);
 
 						Momentum = G4ThreeVector(	daugterLV->X()*GeV	,
 													daugterLV->Y()*GeV	,
 													daugterLV->Z()*GeV 	);
-						Energy   = Momentum.mag() ;
+						Energy   = daugterLV->E()*GeV-mp ;
 						Momentum.unit() ;
 						//Set the gun to shoot
 						particleGun->SetParticleDefinition(proton)                      ;
@@ -678,35 +729,24 @@ void EventGeneratorTransfertToResonance::ResonanceDecay(  G4double EnergyHeavy
 						particleGun->SetParticlePosition(G4ThreeVector(x0, y0, z0))     ;
 						// Shoot the Daugter
 						particleGun->GeneratePrimaryVertex(anEvent) ;
+						
+					 	// get theta and phi in the world frame
+						G4double theta_world = Momentum.theta();
+						G4double phi_world   = Momentum.phi();
+						if (phi_world < 1e-6) phi_world += 2*pi;
+						// write angles in ROOT file
+						m_InitConditions->SetICEmittedAngleThetaLabWorldFrame(theta_world / deg);
+						m_InitConditions->SetICEmittedAnglePhiWorldFrame(phi_world / deg);		
+						m_InitConditions->SetICEmittedEnergy(Energy);
 						jj++;
 					}
 				
-			delete masses 	;
-		}
-	}
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-vector<double>	EventGeneratorTransfertToResonance::PhaseSpaceUniformGenerator( int N , double R)
-	{
-		vector<double> V ;
-		V.reserve(N)	 ;
-		double Norme 	 ;
-		double Buffer	 ;
-		
-			for(int i = 0 ; i< N ; i++)
-					{
-						V.push_back( Buffer = CLHEP::RandFlat::shoot() );
-						Norme += Buffer*Buffer ;
-					}
-					
-			Norme = sqrt(Norme)	;
 			
-			for(int i = 0 ; i< N ; i++)
-						V[i] = V[i] / Norme 	;
+		}
 		
-		return V;
+		delete masses 	;
 	}
+}
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void EventGeneratorTransfertToResonance::SetEverything(	  string    name1          			,
@@ -753,5 +793,3 @@ void EventGeneratorTransfertToResonance::SetEverything(	  string    name1
 
 }
 
-
-
diff --git a/NPSimulation/src/GaspardScorers.cc b/NPSimulation/src/GaspardScorers.cc
index 8ece0f60b46b3bdf2bfcaacb0b145528e1fdce63..266edcfdfdb814c35fe5536c4f7e4d29639634b0 100644
--- a/NPSimulation/src/GaspardScorers.cc
+++ b/NPSimulation/src/GaspardScorers.cc
@@ -19,9 +19,13 @@
  *                                                                           *
  *****************************************************************************/
 
-#include "GaspardScorers.hh"
+// G4 headers
 #include "G4UnitsTable.hh"
 
+// NPTool headers
+#include "GeneralScorers.hh"
+#include "GaspardScorers.hh"
+
 #include "GaspardTrackerDummyShape.hh"
 #include "GaspardTrackerSquare.hh"
 #include "GaspardTrackerTrapezoid.hh"
@@ -39,12 +43,12 @@ using namespace GPDDUMMYSHAPE;
 // scorer provide by G4 don't work this way but using a global ID for each event you should
 // not use those scorer with some G4 provided ones or being very carefull doing so.
 
-
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // FirstStage Energy Scorer (deal with multiple particle hit)
-GPDScorerFirstStageEnergy::GPDScorerFirstStageEnergy(G4String name, G4int depth)
+GPDScorerFirstStageEnergy::GPDScorerFirstStageEnergy(G4String name, G4String volumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+   m_VolumeName = volumeName;
 }
 
 GPDScorerFirstStageEnergy::~GPDScorerFirstStageEnergy()
@@ -53,13 +57,17 @@ GPDScorerFirstStageEnergy::~GPDScorerFirstStageEnergy()
 
 G4bool GPDScorerFirstStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   // get energy
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(index, edep);
+   EvtMap->add(DetNbr + index, edep);
    return TRUE;
 }
 
@@ -102,9 +110,10 @@ void GPDScorerFirstStageEnergy::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // SecondStage Energy Scorer (deal with multiple particle hit)
-GPDScorerSecondStageEnergy::GPDScorerSecondStageEnergy(G4String name, G4int depth)
+GPDScorerSecondStageEnergy::GPDScorerSecondStageEnergy(G4String name, G4String volumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+   m_VolumeName = volumeName;
 }
 
 GPDScorerSecondStageEnergy::~GPDScorerSecondStageEnergy()
@@ -113,13 +122,17 @@ GPDScorerSecondStageEnergy::~GPDScorerSecondStageEnergy()
 
 G4bool GPDScorerSecondStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   // get energy
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(index, edep);
+   EvtMap->add(DetNbr + index, edep);
    return TRUE;
 }
 
@@ -162,9 +175,10 @@ void GPDScorerSecondStageEnergy::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // ThirdStage Energy Scorer (deal with multiple particle hit)
-GPDScorerThirdStageEnergy::GPDScorerThirdStageEnergy(G4String name, G4int depth)
+GPDScorerThirdStageEnergy::GPDScorerThirdStageEnergy(G4String name, G4String volumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+   m_VolumeName = volumeName;
 }
 
 GPDScorerThirdStageEnergy::~GPDScorerThirdStageEnergy()
@@ -173,13 +187,17 @@ GPDScorerThirdStageEnergy::~GPDScorerThirdStageEnergy()
 
 G4bool GPDScorerThirdStageEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, m_VolumeName);
+
+   // get energy
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(index, edep);
+   EvtMap->add(DetNbr + index, edep);
    return TRUE;
 }
 
@@ -220,71 +238,6 @@ void GPDScorerThirdStageEnergy::PrintAll()
 
 
 
-GPDScorerDetectorNumber::GPDScorerDetectorNumber(G4String name, G4int depth, G4String VolumeName )
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-   m_VolumeName = VolumeName;
-}
-
-GPDScorerDetectorNumber::~GPDScorerDetectorNumber()
-{
-}
-
-G4bool GPDScorerDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr;
-   size_t found = name.find(m_VolumeName);
-
-   int numberOfCharacterInTelescopeNumberSquare = (int)found - 1;
-
-   for (int i = 0; i < numberOfCharacterInTelescopeNumberSquare; i++) nbr += name[i+1];
-
-   G4int DetNbr = atof(nbr.c_str());
-
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, DetNbr);
-   return TRUE;
-}
-
-void GPDScorerDetectorNumber::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void GPDScorerDetectorNumber::EndOfEvent(G4HCofThisEvent*)
-{
-}
-
-void GPDScorerDetectorNumber::Clear()
-{
-   EvtMap->clear();
-}
-
-void GPDScorerDetectorNumber::DrawAll()
-{
-}
-
-void GPDScorerDetectorNumber::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
-
-
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // FirstStage Front Strip position Scorer for DummyShape geometry
@@ -300,6 +253,10 @@ GPDScorerFirstStageFrontStripDummyShape::~GPDScorerFirstStageFrontStripDummyShap
 
 G4bool GPDScorerFirstStageFrontStripDummyShape::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDDummyShape");
+
+   // get front strip number
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -313,7 +270,7 @@ G4bool GPDScorerFirstStageFrontStripDummyShape::ProcessHits(G4Step* aStep, G4Tou
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(DetNbr + index, X);
    return TRUE;
 }
 
@@ -362,6 +319,10 @@ GPDScorerFirstStageBackStripDummyShape::~GPDScorerFirstStageBackStripDummyShape(
 
 G4bool GPDScorerFirstStageBackStripDummyShape::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDDummyShape");
+
+   // get back strip number
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -374,7 +335,7 @@ G4bool GPDScorerFirstStageBackStripDummyShape::ProcessHits(G4Step* aStep, G4Touc
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(DetNbr + index, X);
    return TRUE;
 }
 
@@ -423,6 +384,10 @@ GPDScorerFirstStageFrontStripSquare::~GPDScorerFirstStageFrontStripSquare()
 
 G4bool GPDScorerFirstStageFrontStripSquare::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDSquare");
+
+   // get front strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -435,7 +400,7 @@ G4bool GPDScorerFirstStageFrontStripSquare::ProcessHits(G4Step* aStep, G4Touchab
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(DetNbr + index, X);
    return TRUE;
 }
 
@@ -483,6 +448,10 @@ GPDScorerFirstStageBackStripSquare::~GPDScorerFirstStageBackStripSquare()
 
 G4bool GPDScorerFirstStageBackStripSquare::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDSquare");
+
+   // get back strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -497,7 +466,7 @@ G4bool GPDScorerFirstStageBackStripSquare::ProcessHits(G4Step* aStep, G4Touchabl
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, Y);
+   EvtMap->set(DetNbr + index, Y);
    return TRUE;
 }
 
@@ -545,6 +514,10 @@ GPDScorerFirstStageFrontStripTrapezoid::~GPDScorerFirstStageFrontStripTrapezoid(
 
 G4bool GPDScorerFirstStageFrontStripTrapezoid::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDTrapezoid");
+
+   // get front strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -557,7 +530,7 @@ G4bool GPDScorerFirstStageFrontStripTrapezoid::ProcessHits(G4Step* aStep, G4Touc
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(DetNbr + index, X);
    return TRUE;
 }
 
@@ -605,6 +578,10 @@ GPDScorerFirstStageBackStripTrapezoid::~GPDScorerFirstStageBackStripTrapezoid()
 
 G4bool GPDScorerFirstStageBackStripTrapezoid::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDTrapezoid");
+
+   // get back strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -619,7 +596,7 @@ G4bool GPDScorerFirstStageBackStripTrapezoid::ProcessHits(G4Step* aStep, G4Touch
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, Y);
+   EvtMap->set(DetNbr + index, Y);
    return TRUE;
 }
 
@@ -668,6 +645,10 @@ GPDScorerFirstStageFrontStripAnnular::~GPDScorerFirstStageFrontStripAnnular()
 
 G4bool GPDScorerFirstStageFrontStripAnnular::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDAnnular");
+
+   // get front strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -680,7 +661,7 @@ G4bool GPDScorerFirstStageFrontStripAnnular::ProcessHits(G4Step* aStep, G4Toucha
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(DetNbr + index, X);
    return TRUE;
 }
 
@@ -729,6 +710,10 @@ GPDScorerFirstStageBackStripAnnular::~GPDScorerFirstStageBackStripAnnular()
 
 G4bool GPDScorerFirstStageBackStripAnnular::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   // get detector number
+   int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "GPDAnnular");
+
+   // get back strip
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
@@ -743,7 +728,7 @@ G4bool GPDScorerFirstStageBackStripAnnular::ProcessHits(G4Step* aStep, G4Touchab
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, Y);
+   EvtMap->set(DetNbr + index, Y);
    return TRUE;
 }
 
diff --git a/NPSimulation/src/GaspardTrackerAnnular.cc b/NPSimulation/src/GaspardTrackerAnnular.cc
index 9432cb7dc048a06679f6cb2f9c6fdf1b79095589..64693c36fb2e6979df99edd208bea0064fa2219d 100644
--- a/NPSimulation/src/GaspardTrackerAnnular.cc
+++ b/NPSimulation/src/GaspardTrackerAnnular.cc
@@ -9,12 +9,13 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 15/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 12/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define a module of annular shape for the Gaspard tracker      *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -135,14 +136,14 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
    G4Material* Silicon = new G4Material("Si", z = 14., a, density);
 
    // Al
-   density = 2.702 * g / cm3;
-   a = 26.98 * g / mole;
-   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
+//   density = 2.702 * g / cm3;
+//   a = 26.98 * g / mole;
+//   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
 
    // Iron
-   density = 7.874 * g / cm3;
-   a = 55.847 * g / mole;
-   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
+//   density = 7.874 * g / cm3;
+//   a = 55.847 * g / mole;
+//   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
 
    // CsI
    density = 4.51 * g / cm3;
@@ -282,7 +283,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
                                          360*deg); 
       G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, "G" + DetectorNumber + "Silicon", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
       // Set First Stage sensible
       logicSilicon->SetSensitiveDetector(m_FirstStageScorer);
@@ -315,7 +316,7 @@ void GaspardTrackerAnnular::VolumeMaker(G4int TelescopeNumber   ,
 
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, "G" + DetectorNumber + "ThirdStage", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0);
 
       ///Visualisation of Third Stage
       G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.0, 0.9, 0.)) ;
@@ -502,13 +503,9 @@ void GaspardTrackerAnnular::SetInterCoordPointer(TInteractionCoordinates* interC
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
 {
-   bool checkSi = false      ;
-   G4String DetectorNumber ;
-
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////// Used to Read Event Map of detector //////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
-
    // First Stage
    std::map<G4int, G4int*>::iterator    DetectorNumber_itr;
    std::map<G4int, G4double*>::iterator Energy_itr;
@@ -537,10 +534,6 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
    std::map<G4int, G4double*>::iterator ThirdStageEnergy_itr;
    G4THitsMap<G4double>* ThirdStageEnergyHitMap = NULL;
 
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-   G4int HitNumber = 0;
-   checkSi = false;
 
    // Read the Scorer associated to the first Stage
    //Detector Number
@@ -612,40 +605,35 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
       return;
    }
 
-      // Loop on Strip energy
-      for (G4int l = 0 ; l < sizeE ; l++) {
-         G4int ETrackID  =   Energy_itr->first     ;
-         G4double E     = *(Energy_itr->second)    ;
-         G4int N = 0;
-
-         if (E > 0) {
-            checkSi = true   ;
-            ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-            ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-
-            //  Detector Number
-            DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeN ; h++) {
-                G4int NTrackID  =   DetectorNumber_itr->first       ;
-                G4double Nl     = *(DetectorNumber_itr->second)      ;
-
-                if (NTrackID == ETrackID) {
-                   N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
-                }
-                DetectorNumber_itr++;
+   // Loop on FirstStage number
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+
+      if (N > 0) {
+         // Fill detector number
+         ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Annular"] + N);
+         ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Annular"] + N);
+         ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Annular"] + N);
+         ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Annular"] + N);
+
+         // Energy
+         for (G4int l = 0 ; l < sizeE ; l++) {
+            G4int ETrackID  =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
             }
+            Energy_itr++;
+         }
 
             //  Time
             Time_itr = TimeHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeT ; h++) {
-               G4int TTrackID  =   Time_itr->first       ;
+               G4int TTrackID  =   Time_itr->first - N;
                G4double T     = *(Time_itr->second)      ;
-
-               if (TTrackID == ETrackID) {
+               if (TTrackID == NTrackID) {
                   T = RandGauss::shoot(T, ResoTimePPAC)   ;
                   ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
                   ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
@@ -656,9 +644,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // X
             X_itr = XHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first     ;
-               G4double X     = *(X_itr->second)      ;
-               if (XTrackID == ETrackID) {
+               G4int XTrackID  =   X_itr->first - N;
+               G4double X     = *(X_itr->second);
+               if (XTrackID == NTrackID) {
                   ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X)   ;
                   ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X)   ;
                }
@@ -669,9 +657,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Y
             Y_itr = YHitMap->GetMap()->begin()  ;
             for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first    ;
+               G4int YTrackID  =   Y_itr->first  - N  ;
                G4double Y     = *(Y_itr->second)      ;
-               if (YTrackID == ETrackID) {
+               if (YTrackID == NTrackID) {
                   ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y)   ;
                   ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y)   ;
                }
@@ -682,9 +670,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Pos X
             Pos_X_itr = PosXHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosXTrackID =   Pos_X_itr->first     ;
+               G4int PosXTrackID =   Pos_X_itr->first - N    ;
                G4double PosX     = *(Pos_X_itr->second)      ;
-               if (PosXTrackID == ETrackID) {
+               if (PosXTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionX(PosX) ;
                }
                Pos_X_itr++;
@@ -693,9 +681,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Pos Y
             Pos_Y_itr = PosYHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosYTrackID =   Pos_Y_itr->first     ;
+               G4int PosYTrackID =   Pos_Y_itr->first - N    ;
                G4double PosY     = *(Pos_Y_itr->second)      ;
-               if (PosYTrackID == ETrackID) {
+               if (PosYTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionY(PosY) ;
                }
                Pos_Y_itr++;
@@ -704,9 +692,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Pos Z
             Pos_Z_itr = PosZHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosZTrackID =   Pos_Z_itr->first     ;
+               G4int PosZTrackID =   Pos_Z_itr->first - N    ;
                G4double PosZ     = *(Pos_Z_itr->second)      ;
-               if (PosZTrackID == ETrackID) {
+               if (PosZTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionZ(PosZ) ;
                }
                Pos_Z_itr++;
@@ -715,9 +703,9 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Angle Theta
             Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
+               G4int AngThetaTrackID =   Ang_Theta_itr->first - N    ;
                G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-               if (AngThetaTrackID == ETrackID) {
+               if (AngThetaTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
                }
                Ang_Theta_itr++;
@@ -726,10 +714,10 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Angle Phi
             Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
-               G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-               if (AngPhiTrackID == ETrackID) {
-                  ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
+               G4int AngPhiTrackID =   Ang_Phi_itr->first - N;
+               G4double AngPhi     = *(Ang_Phi_itr->second);
+               if (AngPhiTrackID == NTrackID) {
+                  ms_InterCoord->SetDetectedAnglePhi(AngPhi);
                }
                Ang_Phi_itr++;
             }
@@ -739,23 +727,22 @@ void GaspardTrackerAnnular::ReadSensitive(const G4Event* event)
             // Third Stage
                ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin()  ;
                for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) {
-                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first      ;
-                  G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second)    ;
+                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first - N;
+                  G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second);
 
-                  if (ThirdStageEnergyTrackID == ETrackID) {
+                  if (ThirdStageEnergyTrackID == NTrackID) {
                      ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Annular"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Annular"] + N);
                   }
 
                   ThirdStageEnergy_itr++;
                }
 
-         Energy_itr++;
-         if (checkSi) HitNumber++ ;
+         DetectorNumber_itr++;
       }
 
       // clear map for next event
@@ -779,16 +766,16 @@ void GaspardTrackerAnnular::InitializeScorers()
 {
    // First stage Associate Scorer
    m_FirstStageScorer = new G4MultiFunctionalDetector("FirstStageScorerGPDAnnular");
-   G4VPrimitiveScorer* DetNbr                           = new GPDScorerDetectorNumber("DetectorNumber", 0, "Silicon");
-   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", 0);
-   G4VPrimitiveScorer* TOF                              = new PSTOF("StripTime", 0);
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "GPDAnnular", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("StripTime","GPDAnnular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","GPDAnnular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","GPDAnnular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","GPDAnnular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","GPDAnnular", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","GPDAnnular", 0);
+   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", "GPDAnnular", 0);
    G4VPrimitiveScorer* StripPositionX                   = new GPDScorerFirstStageFrontStripAnnular("StripNumberX", 0, FirstStageRmax, 128);
    G4VPrimitiveScorer* StripPositionY                   = new GPDScorerFirstStageBackStripAnnular("StripNumberY", 0, FirstStageRmax, 128);
-   G4VPrimitiveScorer* InteractionCoordinatesX          = new PSInteractionCoordinatesX("InterCoordX", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesY          = new PSInteractionCoordinatesY("InterCoordY", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesZ          = new PSInteractionCoordinatesZ("InterCoordZ", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0);
 
    //and register it to the multifunctionnal detector
    m_FirstStageScorer->RegisterPrimitive(DetNbr);
@@ -804,12 +791,12 @@ void GaspardTrackerAnnular::InitializeScorers()
 
    // Second stage Associate Scorer
    m_SecondStageScorer = new G4MultiFunctionalDetector("SecondStageScorerGPDAnnular");
-   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", 0);
+   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", "GPDAnnular", 0);
    m_SecondStageScorer->RegisterPrimitive(SecondStageEnergy);
 
    //  Third stage Associate Scorer 
    m_ThirdStageScorer = new G4MultiFunctionalDetector("ThirdStageScorerGPDAnnular");
-   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", 0);
+   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", "GPDAnnular", 0);
    m_ThirdStageScorer->RegisterPrimitive(ThirdStageEnergy);
 
    //  Add All Scorer to the Global Scorer Manager
diff --git a/NPSimulation/src/GaspardTrackerDummyShape.cc b/NPSimulation/src/GaspardTrackerDummyShape.cc
index f8ab37d186e71ba1b3abf02d1239541b962a80a0..20b87009b32667c511016f36c0a1ea139a89c5cc 100644
--- a/NPSimulation/src/GaspardTrackerDummyShape.cc
+++ b/NPSimulation/src/GaspardTrackerDummyShape.cc
@@ -9,7 +9,7 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 03/09/09                                                 *
- * Last update    : 07/09/09                                                 *
+ * Last update    : 12/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define a dummy module for the Gaspard tracker                 *
  *             The goal of this class is to be a starting point to create a  *
@@ -19,6 +19,7 @@
  * Comment:                                                                  *
  *    + 07/09/09: Fix bug for placing module with (r,theta,phi) method.      *
  *                (N. de Sereville)                                          *
+ *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -53,7 +54,6 @@
 #include "GeneralScorers.hh"
 #include "GaspardScorers.hh"
 #include "RootOutput.h"
-#include "MUST2Array.hh"
 
 // CLHEP
 #include "CLHEP/Random/RandGauss.h"
@@ -241,7 +241,8 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
       PVPBuffer = new G4PVPlacement(0, 
                                     positionFirstStage, 
                                     logicFirstStage, 
-                                    "G" + DetectorNumber + "FirstStage", 
+//                                    "G" + DetectorNumber + "FirstStage", 
+                                    Name + "_FirstStage", 
                                     logicGPDDummyShape, 
                                     false, 
                                     0);
@@ -267,7 +268,8 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
       PVPBuffer = new G4PVPlacement(0, 
                                     positionSecondStage, 
                                     logicSecondStage, 
-                                    "G" + DetectorNumber + "SecondStage", 
+//                                    "G" + DetectorNumber + "SecondStage", 
+                                    Name + "_SecondStage", 
                                     logicGPDDummyShape, 
                                     false, 
                                     0);
@@ -293,7 +295,8 @@ void GaspardTrackerDummyShape::VolumeMaker(G4int TelescopeNumber,
       PVPBuffer = new G4PVPlacement(0, 
                                     positionThirdStage, 
                                     logicThirdStage, 
-                                    "G" + DetectorNumber + "ThirdStage", 
+//                                    "G" + DetectorNumber + "ThirdStage", 
+                                    Name + "_ThirdStage", 
                                     logicGPDDummyShape, 
                                     false, 
                                     0);
@@ -758,66 +761,62 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
       return;
    }
 
-   // Loop on FirstStage energy
-   for (G4int l = 0 ; l < sizeE ; l++) {
-      G4int ETrackID  =   Energy_itr->first     ;
-      G4double E     = *(Energy_itr->second)    ;
-      G4int N = 0;
-
-      if (E > 0) {
-         ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-         ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-
-         //  Detector Number
-         DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin();
-         for (G4int h = 0 ; h < sizeN ; h++) {
-             G4int NTrackID  =   DetectorNumber_itr->first       ;
-             G4double Nl     = *(DetectorNumber_itr->second)      ;
-
-             if (NTrackID == ETrackID) {
-                N = Nl ;
-                ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
-             }
-             DetectorNumber_itr++;
+   // Loop on FirstStage number
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+
+      if (N > 0) {
+         // Fill detector number
+         ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["DummyShape"] + N);
+         ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["DummyShape"] + N);
+         ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["DummyShape"] + N);
+         ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["DummyShape"] + N);
+
+         // Energy
+         for (G4int l = 0 ; l < sizeE ; l++) {
+            G4int ETrackID  =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
+            }
+            Energy_itr++;
          }
 
          //  Time
          Time_itr = TimeHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeT ; h++) {
-            G4int TTrackID  =   Time_itr->first       ;
-            G4double T     = *(Time_itr->second)      ;
-
-            if (TTrackID == ETrackID) {
-               T = RandGauss::shoot(T, ResoTimeGpd)   ;
-               ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-               ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
+            G4int TTrackID  =   Time_itr->first - N;
+            G4double T     = *(Time_itr->second);
+            if (TTrackID == NTrackID) {
+               T = RandGauss::shoot(T, ResoTimeGpd);
+               ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd));
+               ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd));
             }
             Time_itr++;
          }
 
-         // X
+         // Strip X
          X_itr = XHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int XTrackID  =   X_itr->first     ;
-            G4double X     = *(X_itr->second)      ;
-            if (XTrackID == ETrackID) {
-               ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X)   ;
-               ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X)   ;
+            G4int XTrackID  =   X_itr->first - N;
+            G4double X     = *(X_itr->second);
+            if (XTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
+               ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
             }
             X_itr++;
          }
 
-         // Y
+         // Strip Y
          Y_itr = YHitMap->GetMap()->begin()  ;
          for (G4int h = 0 ; h < sizeY ; h++) {
-            G4int YTrackID  =   Y_itr->first    ;
-            G4double Y     = *(Y_itr->second)      ;
-            if (YTrackID == ETrackID) {
-               ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y)   ;
-               ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y)   ;
+            G4int YTrackID  =   Y_itr->first - N;
+            G4double Y     = *(Y_itr->second);
+            if (YTrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
+               ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
             }
             Y_itr++;
          }
@@ -825,9 +824,9 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Pos X
          Pos_X_itr = PosXHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int PosXTrackID =   Pos_X_itr->first     ;
+            G4int PosXTrackID =   Pos_X_itr->first - N    ;
             G4double PosX     = *(Pos_X_itr->second)      ;
-            if (PosXTrackID == ETrackID) {
+            if (PosXTrackID == NTrackID) {
                ms_InterCoord->SetDetectedPositionX(PosX) ;
             }
             Pos_X_itr++;
@@ -836,9 +835,9 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Pos Y
          Pos_Y_itr = PosYHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int PosYTrackID =   Pos_Y_itr->first     ;
+            G4int PosYTrackID =   Pos_Y_itr->first - N    ;
             G4double PosY     = *(Pos_Y_itr->second)      ;
-            if (PosYTrackID == ETrackID) {
+            if (PosYTrackID == NTrackID) {
                ms_InterCoord->SetDetectedPositionY(PosY) ;
             }
             Pos_Y_itr++;
@@ -847,9 +846,9 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Pos Z
          Pos_Z_itr = PosZHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int PosZTrackID =   Pos_Z_itr->first     ;
+            G4int PosZTrackID =   Pos_Z_itr->first - N    ;
             G4double PosZ     = *(Pos_Z_itr->second)      ;
-            if (PosZTrackID == ETrackID) {
+            if (PosZTrackID == NTrackID) {
                ms_InterCoord->SetDetectedPositionZ(PosZ) ;
             }
             Pos_Z_itr++;
@@ -858,9 +857,9 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Angle Theta
          Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
+            G4int AngThetaTrackID =   Ang_Theta_itr->first - N    ;
             G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-            if (AngThetaTrackID == ETrackID) {
+            if (AngThetaTrackID == NTrackID) {
                ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
             }
             Ang_Theta_itr++;
@@ -869,9 +868,9 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Angle Phi
          Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
          for (G4int h = 0 ; h < sizeX ; h++) {
-            G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
+            G4int AngPhiTrackID =   Ang_Phi_itr->first - N    ;
             G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-            if (AngPhiTrackID == ETrackID) {
+            if (AngPhiTrackID == NTrackID) {
                ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
             }
             Ang_Phi_itr++;
@@ -880,16 +879,16 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Second Stage
          SecondStageEnergy_itr = SecondStageEnergyHitMap->GetMap()->begin() ;
          for (G4int h = 0 ; h < SecondStageEnergyHitMap->entries() ; h++) {
-            G4int SecondStageEnergyTrackID =   SecondStageEnergy_itr->first  ;
-            G4double SecondStageEnergy     = *(SecondStageEnergy_itr->second)   ;
+            G4int SecondStageEnergyTrackID =   SecondStageEnergy_itr->first - N;
+            G4double SecondStageEnergy     = *(SecondStageEnergy_itr->second);
 
-            if (SecondStageEnergyTrackID == ETrackID) {
+            if (SecondStageEnergyTrackID == NTrackID) {
                ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SecondStageEnergy, ResoSecondStage)) ;
                ms_Event->SetGPDTrkSecondStageEPadNbr(1);
                ms_Event->SetGPDTrkSecondStageTPadNbr(1);
                ms_Event->SetGPDTrkSecondStageTTime(1);
-               ms_Event->SetGPDTrkSecondStageTDetectorNbr(INDEX + N);
-               ms_Event->SetGPDTrkSecondStageEDetectorNbr(INDEX + N);
+               ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["DummyShape"] + N);
+               ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["DummyShape"] + N);
             }
             SecondStageEnergy_itr++;
          }
@@ -897,21 +896,21 @@ void GaspardTrackerDummyShape::ReadSensitive(const G4Event* event)
          // Third Stage
          ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin()  ;
          for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) {
-            G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first      ;
-            G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second)    ;
+            G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first - N;
+            G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second);
 
-            if (ThirdStageEnergyTrackID == ETrackID) {
+            if (ThirdStageEnergyTrackID == NTrackID) {
                ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
                ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                ms_Event->SetGPDTrkThirdStageTTime(1);
-               ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-               ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+               ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["DummyShape"] + N);
+               ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["DummyShape"] + N);
             }
             ThirdStageEnergy_itr++;
          }
 
-         Energy_itr++;
+         DetectorNumber_itr++;
       }
 
       // clear map for next event
@@ -936,16 +935,16 @@ void GaspardTrackerDummyShape::InitializeScorers()
 {
    // First stage Associate Scorer
    m_FirstStageScorer                                   = new G4MultiFunctionalDetector("FirstStageScorerGPDDummyShape");
-   G4VPrimitiveScorer* DetNbr                           = new GPDScorerDetectorNumber("DetectorNumber", 0, "FirstStage");
-   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", 0);
-   G4VPrimitiveScorer* TOF                              = new PSTOF("StripTime", 0);
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "GPDDummyShape", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("StripTime","GPDDummyShape", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","GPDDummyShape", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","GPDDummyShape", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","GPDDummyShape", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","GPDDummyShape", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","GPDDummyShape", 0);
+   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", "GPDDummyShape", 0);
    G4VPrimitiveScorer* StripPositionX                   = new GPDScorerFirstStageFrontStripDummyShape("StripIDFront", 0, NumberOfStrips);
    G4VPrimitiveScorer* StripPositionY                   = new GPDScorerFirstStageBackStripDummyShape("StripIDBack", 0, NumberOfStrips);
-   G4VPrimitiveScorer* InteractionCoordinatesX          = new PSInteractionCoordinatesX("InterCoordX", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesY          = new PSInteractionCoordinatesY("InterCoordY", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesZ          = new PSInteractionCoordinatesZ("InterCoordZ", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0);
 
    //and register it to the multifunctionnal detector
    m_FirstStageScorer->RegisterPrimitive(DetNbr);
@@ -962,13 +961,13 @@ void GaspardTrackerDummyShape::InitializeScorers()
 
    // Second stage Associate Scorer
    m_SecondStageScorer = new G4MultiFunctionalDetector("SecondStageScorerGPDDummyShape");
-   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", 0);
+   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", "GPDDummyShape", 0);
    m_SecondStageScorer->RegisterPrimitive(SecondStageEnergy);
 
 
    //  Third stage Associate Scorer 
    m_ThirdStageScorer = new G4MultiFunctionalDetector("ThirdStageScorerGPDDummyShape");
-   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", 0);
+   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", "GPDDummyShape", 0);
    m_ThirdStageScorer->RegisterPrimitive(ThirdStageEnergy);
 
 
diff --git a/NPSimulation/src/GaspardTrackerModule.cc b/NPSimulation/src/GaspardTrackerModule.cc
index 73637464cdced2664b80f9eb6de813c0d8abb271..890cd77702c06e4720d4ca5b54e55f513e67a61e 100644
--- a/NPSimulation/src/GaspardTrackerModule.cc
+++ b/NPSimulation/src/GaspardTrackerModule.cc
@@ -32,6 +32,7 @@ GaspardTrackerModule::GaspardTrackerModule()
    if (ms_Event == 0) ms_Event = new TGaspardTrackerData();
 
    InitializeRootOutput();
+   InitializeIndex();
 }
 
 
@@ -50,3 +51,13 @@ void GaspardTrackerModule::InitializeRootOutput()
    if (!pTree->GetBranch("GASPARD"))
       pTree->Branch("GASPARD", "TGaspardTrackerData", &ms_Event);
 }
+
+
+
+void GaspardTrackerModule::InitializeIndex()
+{
+   m_index["Square"]     =    0;
+   m_index["Trapezoid"]  =  100;
+   m_index["Annular"]    =  200;
+   m_index["DummyShape"] = 1000;
+}
diff --git a/NPSimulation/src/GaspardTrackerSquare.cc b/NPSimulation/src/GaspardTrackerSquare.cc
index 307c3ce244231f39c30b5e67dd1144d787da51bb..b9eee508a5fdb67749a45c38b148e716b16b066c 100644
--- a/NPSimulation/src/GaspardTrackerSquare.cc
+++ b/NPSimulation/src/GaspardTrackerSquare.cc
@@ -9,7 +9,7 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 10/06/09                                                 *
- * Last update    : 07/09/09                                                 *
+ * Last update    : 12/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define a module of square shape for the Gaspard tracker       *
  *                                                                           *
@@ -17,6 +17,7 @@
  * Comment:                                                                  *
  *    + 07/09/09: Fix bug for placing module with (r,theta,phi) method.      *
  *                (N. de Sereville)                                          *
+ *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -188,9 +189,9 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
    G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
 
    // Iron
-   density = 7.874 * g / cm3;
-   a = 55.847 * g / mole;
-   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
+//   density = 7.874 * g / cm3;
+//   a = 55.847 * g / mole;
+//   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
 
    // CsI
    density = 4.51 * g / cm3;
@@ -303,7 +304,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       G4Box*           solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness);
       G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, "G" + DetectorNumber + "Silicon", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
 
       // Set First Stage sensible
@@ -408,15 +409,15 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
             0);
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , "G" + DetectorNumber + "SiLi_LT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , "G" + DetectorNumber + "SiLi_RT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , "G" + DetectorNumber + "SiLi_LC1" , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , "G" + DetectorNumber + "SiLi_RC1" , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , Name + "_SiLi_LT"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , Name + "_SiLi_RT"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , Name + "_SiLi_LC1" , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , Name + "_SiLi_RC1" , logicSiLi , false , 0)   ;
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , "G" + DetectorNumber + "SiLi_LB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , "G" + DetectorNumber + "SiLi_RB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , "G" + DetectorNumber + "SiLi_LC2" , logicSiLi , false , 0) ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , "G" + DetectorNumber + "SiLi_RC2" , logicSiLi , false , 0) ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , Name + "_SiLi_LB"  , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , Name + "_SiLi_RB"  , logicSiLi , false , 0)   ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , Name + "_SiLi_LC2" , logicSiLi , false , 0) ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , Name + "_SiLi_RC2" , logicSiLi , false , 0) ;
 
       logicSiLi->SetVisAttributes(G4VisAttributes(G4Colour(1, 1., 1.)));
 
@@ -454,7 +455,7 @@ void GaspardTrackerSquare::VolumeMaker(G4int TelescopeNumber,
       G4Box*           solidThirdStage = new G4Box("solidThirdStage", 0.5*FaceFront, 0.5*FaceFront, 0.5*ThirdStageThickness);
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, "G" + DetectorNumber + "ThirdStage", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0);
 
       ///Visualisation of Third Stage
       G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.7, 0.7, 0.7)) ;
@@ -829,13 +830,9 @@ void GaspardTrackerSquare::SetInterCoordPointer(TInteractionCoordinates* interCo
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
 {
-   bool checkSi = false;
-   G4String DetectorNumber;
-
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////// Used to Read Event Map of detector //////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
-
    // First Stage
    std::map<G4int, G4int*>::iterator    DetectorNumber_itr;
    std::map<G4int, G4double*>::iterator Energy_itr;
@@ -867,137 +864,129 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
    std::map<G4int, G4double*>::iterator ThirdStageEnergy_itr  ;
    G4THitsMap<G4double>* ThirdStageEnergyHitMap = NULL    ;
 
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-   G4int HitNumber = 0;
-   checkSi = false;
-
-      // Read the Scorer associate to the Silicon Strip
-      //Detector Number
-      G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/DetectorNumber")    ;
-      DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))         ;
-      DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
-
-      //Energy
-      G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripEnergy")   ;
-      EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                    ;
-      Energy_itr = EnergyHitMap->GetMap()->begin()                                                          ;
-
-      //Time of Flight
-      G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripTime")    ;
-      TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))                        ;
-      Time_itr = TimeHitMap->GetMap()->begin()                                                              ;
-
-      //Strip Number X
-      G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberX")    ;
-      XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
-      X_itr = XHitMap->GetMap()->begin()                                                                    ;
-
-      //Strip Number Y
-      G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberY")    ;
-      YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
-      Y_itr = YHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate X
-      G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordX")    ;
-      PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))                              ;
-      Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Y
-      G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordY")    ;
-      PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))                              ;
-      Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Z
-      G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordZ")    ;
-      PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))                              ;
-      Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Angle Theta
-      G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordAngTheta")    ;
-      AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                              ;
-      Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    ;
-
-      //Interaction Coordinate Angle Phi
-      G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordAngPhi")    ;
-      AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))                              ;
-      Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()                                                                    ;
-
-      // Read the Scorer associate to the SiLi
-         //Energy
-         G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("SecondStageScorerGPDSquare/SecondStageEnergy")   ;
-         SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))                 ;
-         SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     ;
-
-
-      // Read the Scorer associate to the CsI crystal
-         //Energy
-         G4int ThirdStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThirdStageScorerGPDSquare/ThirdStageEnergy");
-         ThirdStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(ThirdStageEnergyCollectionID));
-         ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin();
-
-      // Check the size of different map
-      G4int sizeN = DetectorNumberHitMap->entries();
-      G4int sizeE = EnergyHitMap->entries();
-      G4int sizeT = TimeHitMap->entries();
-      G4int sizeX = XHitMap->entries();
-      G4int sizeY = YHitMap->entries();
-
-      if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
-         G4cout << "No match size Si Event Map: sE:"
-         << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
-         return;
-      }
 
-      // Loop on Strip energy
-      for (G4int l = 0 ; l < sizeE ; l++) {
-         G4int ETrackID  =   Energy_itr->first     ;
-         G4double E     = *(Energy_itr->second)    ;
-         G4int N = 0;
-
-         if (E > 0) {
-            checkSi = true   ;
-            ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-            ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-
-            //  Detector Number
-            DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeN ; h++) {
-                G4int NTrackID  =   DetectorNumber_itr->first       ;
-                G4double Nl     = *(DetectorNumber_itr->second)      ;
-
-                if (NTrackID == ETrackID) {
-                   N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
-                }
-                DetectorNumber_itr++;
-            }
+   // Read the Scorer associate to the Silicon Strip
+   //Detector Number
+   G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/DetectorNumber")    ;
+   DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))         ;
+   DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
+
+   //Energy
+   G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripEnergy")   ;
+   EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                    ;
+   Energy_itr = EnergyHitMap->GetMap()->begin()                                                          ;
+
+   //Time of Flight
+   G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripTime")    ;
+   TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))                        ;
+   Time_itr = TimeHitMap->GetMap()->begin()                                                              ;
+
+   //Strip Number X
+   G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberX")    ;
+   XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                              ;
+   X_itr = XHitMap->GetMap()->begin()                                                                    ;
+
+   //Strip Number Y
+   G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/StripNumberY")    ;
+   YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                              ;
+   Y_itr = YHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate X
+   G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordX")    ;
+   PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))                              ;
+   Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Y
+   G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordY")    ;
+   PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))                              ;
+   Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Z
+   G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordZ")    ;
+   PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))                              ;
+   Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Theta
+   G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordAngTheta")    ;
+   AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                              ;
+   Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    ;
+
+   //Interaction Coordinate Angle Phi
+   G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("FirstStageScorerGPDSquare/InterCoordAngPhi")    ;
+   AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))                              ;
+   Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()                                                                    ;
+
+
+   // Read the Scorer associate to the SiLi
+   //Energy
+   G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("SecondStageScorerGPDSquare/SecondStageEnergy")   ;
+   SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))                 ;
+   SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     ;
+
+
+   // Read the Scorer associate to the CsI crystal
+   //Energy
+   G4int ThirdStageEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThirdStageScorerGPDSquare/ThirdStageEnergy");
+   ThirdStageEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(ThirdStageEnergyCollectionID));
+   ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin();
+
+   // Check the size of different map
+   G4int sizeN = DetectorNumberHitMap->entries();
+   G4int sizeE = EnergyHitMap->entries();
+   G4int sizeT = TimeHitMap->entries();
+   G4int sizeX = XHitMap->entries();
+   G4int sizeY = YHitMap->entries();
+
+   if (sizeE != sizeT || sizeT != sizeX || sizeX != sizeY) {
+      G4cout << "No match size Si Event Map: sE:"
+      << sizeE << " sT:" << sizeT << " sX:" << sizeX << " sY:" << sizeY << endl ;
+      return;
+   }
 
-            //  Time
-            Time_itr = TimeHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeT ; h++) {
-               G4int TTrackID  =   Time_itr->first       ;
-               G4double T     = *(Time_itr->second)      ;
+   // Loop on FirstStage number
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+
+      if (N > 0) {
+         // Fill detector number
+         ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Square"] + N);
+         ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Square"] + N);
+         ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Square"] + N);
+         ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Square"] + N);
+
+         // Energy
+         for (G4int l = 0 ; l < sizeE ; l++) {
+            G4int ETrackID  =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
+            }
+            Energy_itr++;
+         }
 
-               if (TTrackID == ETrackID) {
-                  T = RandGauss::shoot(T, ResoTimePPAC)   ;
-                  ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-                  ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
-               }
-               Time_itr++;
+         //  Time
+         Time_itr = TimeHitMap->GetMap()->begin();
+         for (G4int h = 0 ; h < sizeT ; h++) {
+            G4int TTrackID  =   Time_itr->first - N;
+            G4double T     = *(Time_itr->second);
+            if (TTrackID == NTrackID) {
+               T = RandGauss::shoot(T, ResoTimePPAC)   ;
+               ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
+               ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
             }
+            Time_itr++;
+         }
 
             // X
             X_itr = XHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first     ;
-               G4double X     = *(X_itr->second)      ;
-               if (XTrackID == ETrackID) {
-                  ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X)   ;
-                  ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X)   ;
+               G4int XTrackID  =   X_itr->first - N;
+               G4double X     = *(X_itr->second);
+               if (XTrackID == NTrackID) {
+                  ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
+                  ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
                }
 
                X_itr++;
@@ -1006,11 +995,11 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Y
             Y_itr = YHitMap->GetMap()->begin()  ;
             for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first    ;
-               G4double Y     = *(Y_itr->second)      ;
-               if (YTrackID == ETrackID) {
-                  ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y)   ;
-                  ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y)   ;
+               G4int YTrackID  =   Y_itr->first - N;
+               G4double Y     = *(Y_itr->second);
+               if (YTrackID == NTrackID) {
+                  ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
+                  ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
                }
 
                Y_itr++;
@@ -1019,9 +1008,9 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Pos X
             Pos_X_itr = PosXHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosXTrackID =   Pos_X_itr->first     ;
+               G4int PosXTrackID =   Pos_X_itr->first - N    ;
                G4double PosX     = *(Pos_X_itr->second)      ;
-               if (PosXTrackID == ETrackID) {
+               if (PosXTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionX(PosX) ;
                }
                Pos_X_itr++;
@@ -1030,9 +1019,9 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Pos Y
             Pos_Y_itr = PosYHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosYTrackID =   Pos_Y_itr->first     ;
+               G4int PosYTrackID =   Pos_Y_itr->first - N    ;
                G4double PosY     = *(Pos_Y_itr->second)      ;
-               if (PosYTrackID == ETrackID) {
+               if (PosYTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionY(PosY) ;
                }
                Pos_Y_itr++;
@@ -1041,9 +1030,9 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Pos Z
             Pos_Z_itr = PosZHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosZTrackID =   Pos_Z_itr->first     ;
+               G4int PosZTrackID =   Pos_Z_itr->first - N    ;
                G4double PosZ     = *(Pos_Z_itr->second)      ;
-               if (PosZTrackID == ETrackID) {
+               if (PosZTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionZ(PosZ) ;
                }
                Pos_Z_itr++;
@@ -1052,9 +1041,9 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Angle Theta
             Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
+               G4int AngThetaTrackID =   Ang_Theta_itr->first - N    ;
                G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-               if (AngThetaTrackID == ETrackID) {
+               if (AngThetaTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
                }
                Ang_Theta_itr++;
@@ -1063,9 +1052,9 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Angle Phi
             Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
+               G4int AngPhiTrackID =   Ang_Phi_itr->first - N    ;
                G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-               if (AngPhiTrackID == ETrackID) {
+               if (AngPhiTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
                }
                Ang_Phi_itr++;
@@ -1074,16 +1063,16 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Second Stage
                SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin() ;
                for (G4int h = 0 ; h < SiLiEnergyHitMap->entries() ; h++) {
-                  G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  ;
-                  G4double SiLiEnergy     = *(SiLiEnergy_itr->second)   ;
+                  G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first - N;
+                  G4double SiLiEnergy     = *(SiLiEnergy_itr->second);
 
-                  if (SiLiEnergyTrackID == ETrackID) {
+                  if (SiLiEnergyTrackID == NTrackID) {
                      ms_Event->SetGPDTrkSecondStageEEnergy(RandGauss::shoot(SiLiEnergy, ResoSecondStage)) ;
                      ms_Event->SetGPDTrkSecondStageEPadNbr(1);
                      ms_Event->SetGPDTrkSecondStageTPadNbr(1);
                      ms_Event->SetGPDTrkSecondStageTTime(1);
-                     ms_Event->SetGPDTrkSecondStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkSecondStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkSecondStageTDetectorNbr(m_index["Square"] + N);
+                     ms_Event->SetGPDTrkSecondStageEDetectorNbr(m_index["Square"] + N);
                   }
 
                   SiLiEnergy_itr++;
@@ -1092,24 +1081,24 @@ void GaspardTrackerSquare::ReadSensitive(const G4Event* event)
             // Third Stage
                ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin()  ;
                for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) {
-                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first      ;
+                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first - N;
                   G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second)    ;
 
-                  if (ThirdStageEnergyTrackID == ETrackID) {
+                  if (ThirdStageEnergyTrackID == NTrackID) {
                      ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Square"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Square"] + N);
                   }
 
                   ThirdStageEnergy_itr++;
                }
 
-         Energy_itr++;
-         if (checkSi) HitNumber++ ;
+         DetectorNumber_itr++;
       }
+
       // clear map for next event
       DetectorNumberHitMap ->clear();
       EnergyHitMap   ->clear()   ;
@@ -1132,16 +1121,16 @@ void GaspardTrackerSquare::InitializeScorers()
 {
    // First stage Associate Scorer
    m_FirstStageScorer = new G4MultiFunctionalDetector("FirstStageScorerGPDSquare");
-   G4VPrimitiveScorer* DetNbr                           = new GPDScorerDetectorNumber("DetectorNumber", 0, "Silicon");
-   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", 0);
-   G4VPrimitiveScorer* TOF                              = new PSTOF("StripTime", 0);
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "GPDSquare", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("StripTime","GPDSquare", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","GPDSquare", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","GPDSquare", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","GPDSquare", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","GPDSquare", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","GPDSquare", 0);
+   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", "GPDSquare", 0);
    G4VPrimitiveScorer* StripPositionX                   = new GPDScorerFirstStageFrontStripSquare("StripNumberX", 0, NumberOfStrips);
    G4VPrimitiveScorer* StripPositionY                   = new GPDScorerFirstStageBackStripSquare("StripNumberY", 0, NumberOfStrips);
-   G4VPrimitiveScorer* InteractionCoordinatesX          = new PSInteractionCoordinatesX("InterCoordX", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesY          = new PSInteractionCoordinatesY("InterCoordY", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesZ          = new PSInteractionCoordinatesZ("InterCoordZ", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0);
 
    //and register it to the multifunctionnal detector
    m_FirstStageScorer->RegisterPrimitive(DetNbr);
@@ -1157,12 +1146,12 @@ void GaspardTrackerSquare::InitializeScorers()
 
    // Second stage Associate Scorer
    m_SecondStageScorer = new G4MultiFunctionalDetector("SecondStageScorerGPDSquare");
-   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", 0);
+   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", "GPDSquare", 0);
    m_SecondStageScorer->RegisterPrimitive(SecondStageEnergy);
 
    //  Third stage Associate Scorer 
    m_ThirdStageScorer = new G4MultiFunctionalDetector("ThirdStageScorerGPDSquare");
-   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", 0);
+   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", "GPDSquare", 0);
    m_ThirdStageScorer->RegisterPrimitive(ThirdStageEnergy);
 
    //  Add All Scorer to the Global Scorer Manager
diff --git a/NPSimulation/src/GaspardTrackerTrapezoid.cc b/NPSimulation/src/GaspardTrackerTrapezoid.cc
index 714a28c9d23a8980ab38c04e540f7b11bc0f16ea..2a38ba8c373085604a94e8fc14af6140fdc87ad3 100644
--- a/NPSimulation/src/GaspardTrackerTrapezoid.cc
+++ b/NPSimulation/src/GaspardTrackerTrapezoid.cc
@@ -9,12 +9,13 @@
  * Original Author: N. de Sereville  contact address: deserevi@ipno.in2p3.fr *
  *                                                                           *
  * Creation Date  : 15/07/09                                                 *
- * Last update    :                                                          *
+ * Last update    : 12/10/09                                                 *
  *---------------------------------------------------------------------------*
  * Decription: Define a module of trapezoidal shape for the Gaspard tracker  *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *    + 12/10/09: Change scorer scheme (N. de Sereville)                     *
  *                                                                           *
  *                                                                           *
  *****************************************************************************/
@@ -179,14 +180,14 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
    G4Material* Silicon = new G4Material("Si", z = 14., a, density);
 
    // Al
-   density = 2.702 * g / cm3;
-   a = 26.98 * g / mole;
-   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
+//   density = 2.702 * g / cm3;
+//   a = 26.98 * g / mole;
+//   G4Material* Aluminium = new G4Material("Aluminium", z = 13., a, density);
 
    // Iron
-   density = 7.874 * g / cm3;
-   a = 55.847 * g / mole;
-   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
+//   density = 7.874 * g / cm3;
+//   a = 55.847 * g / mole;
+//   G4Material* Iron = new G4Material("Iron", z = 26., a, density);
 
    // CsI
    density = 4.51 * g / cm3;
@@ -316,7 +317,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
                                          FirstStageHeight/2, FirstStageBaseSmall/2, FirstStageBaseLarge/2, 0*deg);
       G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, Silicon, "logicSilicon", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, "G" + DetectorNumber + "Silicon", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
       // Set First Stage sensible
       logicSilicon->SetSensitiveDetector(m_FirstStageScorer);
@@ -346,7 +347,7 @@ void GaspardTrackerTrapezoid::VolumeMaker(G4int TelescopeNumber   ,
 
       G4LogicalVolume* logicThirdStage = new G4LogicalVolume(solidThirdStage, Silicon, "logicThirdStage", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, "G" + DetectorNumber + "ThirdStage", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionThirdStage, logicThirdStage, Name + "_ThirdStage", logicMM, false, 0);
 
       // Visualisation of Third Stage
       G4VisAttributes* ThirdStageVisAtt = new G4VisAttributes(G4Colour(0.7, 0.7, 0.7)) ;
@@ -722,13 +723,9 @@ void GaspardTrackerTrapezoid::SetInterCoordPointer(TInteractionCoordinates* inte
 // Called at in the EventAction::EndOfEventAvtion
 void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
 {
-   bool checkSi = false      ;
-   G4String DetectorNumber ;
-
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////// Used to Read Event Map of detector //////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
-
    // First Stage
    std::map<G4int, G4int*>::iterator    DetectorNumber_itr;
    std::map<G4int, G4double*>::iterator Energy_itr;
@@ -758,10 +755,6 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
    std::map<G4int, G4double*>::iterator ThirdStageEnergy_itr;
    G4THitsMap<G4double>* ThirdStageEnergyHitMap = NULL;
 
-//////////////////////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////////////////////
-   G4int HitNumber = 0;
-   checkSi = false;
 
    // Read the Scorer associated to the first Stage
    //Detector Number
@@ -833,40 +826,36 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
          return;
       }
 
-      // Loop on Strip energy
-      for (G4int l = 0 ; l < sizeE ; l++) {
-         G4int ETrackID  =   Energy_itr->first     ;
-         G4double E     = *(Energy_itr->second)    ;
-         G4int N = 0;
-
-         if (E > 0) {
-            checkSi = true   ;
-            ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-            ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage))    ;
-
-            //  Detector Number
-            DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin();
-            for (G4int h = 0 ; h < sizeN ; h++) {
-                G4int NTrackID  =   DetectorNumber_itr->first       ;
-                G4double Nl     = *(DetectorNumber_itr->second)      ;
-
-                if (NTrackID == ETrackID) {
-                   N = Nl ;
-                   ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(INDEX + N);
-                   ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(INDEX + N);
-                }
-                DetectorNumber_itr++;
+   // Loop on FirstStage number
+   for (G4int l = 0; l < sizeN; l++) {
+      G4double N     = *(DetectorNumber_itr->second);
+      G4int NTrackID =   DetectorNumber_itr->first - N;
+
+      if (N > 0) {
+         // Fill detector number
+         ms_Event->SetGPDTrkFirstStageFrontEDetectorNbr(m_index["Trapezoid"] + N);
+         ms_Event->SetGPDTrkFirstStageFrontTDetectorNbr(m_index["Trapezoid"] + N);
+         ms_Event->SetGPDTrkFirstStageBackEDetectorNbr(m_index["Trapezoid"] + N);
+         ms_Event->SetGPDTrkFirstStageBackTDetectorNbr(m_index["Trapezoid"] + N);
+
+         // Energy
+         for (G4int l = 0 ; l < sizeE ; l++) {
+            G4int ETrackID  =   Energy_itr->first - N;
+            G4double E     = *(Energy_itr->second);
+            if (ETrackID == NTrackID) {
+               ms_Event->SetGPDTrkFirstStageFrontEEnergy(RandGauss::shoot(E, ResoFirstStage));
+               ms_Event->SetGPDTrkFirstStageBackEEnergy(RandGauss::shoot(E, ResoFirstStage));
             }
+            Energy_itr++;
+         }
 
             //  Time
             Time_itr = TimeHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeT ; h++) {
-               G4int TTrackID  =   Time_itr->first       ;
-               G4double T     = *(Time_itr->second)      ;
+               G4int TTrackID  =   Time_itr->first - N;
+               G4double T     = *(Time_itr->second);
 
-               if (TTrackID == ETrackID) {
+               if (TTrackID == NTrackID) {
                   T = RandGauss::shoot(T, ResoTimePPAC)   ;
                   ms_Event->SetGPDTrkFirstStageFrontTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
                   ms_Event->SetGPDTrkFirstStageBackTTime(RandGauss::shoot(T, ResoTimeGpd)) ;
@@ -877,9 +866,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // X
             X_itr = XHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int XTrackID  =   X_itr->first     ;
-               G4double X     = *(X_itr->second)      ;
-               if (XTrackID == ETrackID) {
+               G4int XTrackID  =   X_itr->first - N;
+               G4double X     = *(X_itr->second);
+               if (XTrackID == NTrackID) {
                   ms_Event->SetGPDTrkFirstStageFrontEStripNbr(X);
                   ms_Event->SetGPDTrkFirstStageFrontTStripNbr(X);
                }
@@ -890,9 +879,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Y
             Y_itr = YHitMap->GetMap()->begin()  ;
             for (G4int h = 0 ; h < sizeY ; h++) {
-               G4int YTrackID  =   Y_itr->first    ;
-               G4double Y     = *(Y_itr->second)      ;
-               if (YTrackID == ETrackID) {
+               G4int YTrackID  =   Y_itr->first - N;
+               G4double Y     = *(Y_itr->second);
+               if (YTrackID == NTrackID) {
                   ms_Event->SetGPDTrkFirstStageBackEStripNbr(Y);
                   ms_Event->SetGPDTrkFirstStageBackTStripNbr(Y);
                }
@@ -903,9 +892,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Pos X
             Pos_X_itr = PosXHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosXTrackID =   Pos_X_itr->first     ;
+               G4int PosXTrackID =   Pos_X_itr->first - N    ;
                G4double PosX     = *(Pos_X_itr->second)      ;
-               if (PosXTrackID == ETrackID) {
+               if (PosXTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionX(PosX) ;
                }
                Pos_X_itr++;
@@ -914,9 +903,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Pos Y
             Pos_Y_itr = PosYHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosYTrackID =   Pos_Y_itr->first     ;
+               G4int PosYTrackID =   Pos_Y_itr->first  - N   ;
                G4double PosY     = *(Pos_Y_itr->second)      ;
-               if (PosYTrackID == ETrackID) {
+               if (PosYTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionY(PosY) ;
                }
                Pos_Y_itr++;
@@ -925,9 +914,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Pos Z
             Pos_Z_itr = PosZHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int PosZTrackID =   Pos_Z_itr->first     ;
+               G4int PosZTrackID =   Pos_Z_itr->first - N    ;
                G4double PosZ     = *(Pos_Z_itr->second)      ;
-               if (PosZTrackID == ETrackID) {
+               if (PosZTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedPositionZ(PosZ) ;
                }
                Pos_Z_itr++;
@@ -936,9 +925,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Angle Theta
             Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
+               G4int AngThetaTrackID =   Ang_Theta_itr->first - N    ;
                G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-               if (AngThetaTrackID == ETrackID) {
+               if (AngThetaTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
                }
                Ang_Theta_itr++;
@@ -947,9 +936,9 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Angle Phi
             Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
             for (G4int h = 0 ; h < sizeX ; h++) {
-               G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
+               G4int AngPhiTrackID =   Ang_Phi_itr->first - N    ;
                G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-               if (AngPhiTrackID == ETrackID) {
+               if (AngPhiTrackID == NTrackID) {
                   ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
                }
                Ang_Phi_itr++;
@@ -960,23 +949,22 @@ void GaspardTrackerTrapezoid::ReadSensitive(const G4Event* event)
             // Third Stage
                ThirdStageEnergy_itr = ThirdStageEnergyHitMap->GetMap()->begin()  ;
                for (G4int h = 0 ; h < ThirdStageEnergyHitMap->entries() ; h++) {
-                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first      ;
-                  G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second)    ;
+                  G4int ThirdStageEnergyTrackID  =   ThirdStageEnergy_itr->first - N;
+                  G4double ThirdStageEnergy      = *(ThirdStageEnergy_itr->second);
 
-                  if (ThirdStageEnergyTrackID == ETrackID) {
+                  if (ThirdStageEnergyTrackID == NTrackID) {
                      ms_Event->SetGPDTrkThirdStageEEnergy(RandGauss::shoot(ThirdStageEnergy, ResoThirdStage));
                      ms_Event->SetGPDTrkThirdStageEPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTPadNbr(1);
                      ms_Event->SetGPDTrkThirdStageTTime(1);
-                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(INDEX + N);
-                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(INDEX + N);
+                     ms_Event->SetGPDTrkThirdStageTDetectorNbr(m_index["Trapezoid"] + N);
+                     ms_Event->SetGPDTrkThirdStageEDetectorNbr(m_index["Trapezoid"] + N);
                   }
 
                   ThirdStageEnergy_itr++;
                }
 
-         Energy_itr++;
-         if (checkSi) HitNumber++ ;
+         DetectorNumber_itr++;
       }
 
       // clear map for next event
@@ -1000,16 +988,16 @@ void GaspardTrackerTrapezoid::InitializeScorers()
 {
    // First stage Associate Scorer
    m_FirstStageScorer = new G4MultiFunctionalDetector("FirstStageScorerGPDTrapezoid");
-   G4VPrimitiveScorer* DetNbr                           = new GPDScorerDetectorNumber("DetectorNumber", 0, "Silicon");
-   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", 0);
-   G4VPrimitiveScorer* TOF                              = new PSTOF("StripTime", 0);
+   G4VPrimitiveScorer* DetNbr                           = new GENERALSCORERS::PSDetectorNumber("DetectorNumber", "GPDTrapezoid", 0);
+   G4VPrimitiveScorer* TOF                              = new GENERALSCORERS::PSTOF("StripTime","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesX          = new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesY          = new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesZ          = new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","GPDTrapezoid", 0);
+   G4VPrimitiveScorer* Energy                           = new GPDScorerFirstStageEnergy("StripEnergy", "GPDTrapezoid", 0);
    G4VPrimitiveScorer* StripPositionX                   = new GPDScorerFirstStageFrontStripTrapezoid("StripNumberX", 0, NumberOfStripsX);
    G4VPrimitiveScorer* StripPositionY                   = new GPDScorerFirstStageBackStripTrapezoid("StripNumberY",  0, NumberOfStripsY);
-   G4VPrimitiveScorer* InteractionCoordinatesX          = new PSInteractionCoordinatesX("InterCoordX", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesY          = new PSInteractionCoordinatesY("InterCoordY", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesZ          = new PSInteractionCoordinatesZ("InterCoordZ", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAngleTheta = new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0);
-   G4VPrimitiveScorer* InteractionCoordinatesAnglePhi   = new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0);
 
    //and register it to the multifunctionnal detector
    m_FirstStageScorer->RegisterPrimitive(DetNbr);
@@ -1025,12 +1013,12 @@ void GaspardTrackerTrapezoid::InitializeScorers()
 
    // Second stage Associate Scorer
    m_SecondStageScorer = new G4MultiFunctionalDetector("SecondStageScorerGPDTrapezoid");
-   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", 0);
+   G4VPrimitiveScorer* SecondStageEnergy = new GPDScorerSecondStageEnergy("SecondStageEnergy", "GPDTrapezoid", 0);
    m_SecondStageScorer->RegisterPrimitive(SecondStageEnergy);
 
    //  Third stage Associate Scorer 
    m_ThirdStageScorer = new G4MultiFunctionalDetector("ThirdStageScorerGPDTrapezoid");
-   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", 0);
+   G4VPrimitiveScorer* ThirdStageEnergy = new GPDScorerThirdStageEnergy("ThirdStageEnergy", "GPDTrapezoid", 0);
    m_ThirdStageScorer->RegisterPrimitive(ThirdStageEnergy);
 
    //  Add All Scorer to the Global Scorer Manager
diff --git a/NPSimulation/src/GeneralScorers.cc b/NPSimulation/src/GeneralScorers.cc
index 9fe510c3b9a76f788af8ae39d89c410e63764fff..c22470385ec78a2e41f3deaac458714dfd2bd302 100644
--- a/NPSimulation/src/GeneralScorers.cc
+++ b/NPSimulation/src/GeneralScorers.cc
@@ -24,15 +24,107 @@
  *****************************************************************************/
 #include "GeneralScorers.hh"
 #include "G4UnitsTable.hh"
+using namespace GENERALSCORERS ;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+//	The following function is used in many scorer. following the Detector Volume Nomenclature
+//	DetectorNameX_SubPart_SubPart
+//  where X stand for the detector number.
+
+int GENERALSCORERS::PickUpDetectorNumber(G4Step* aStep, std::string DetName)
+{
+   std::string name = aStep->GetTrack()->GetVolume()->GetName();
+   std::string nbr;
+   size_t start, end;
+
+   start = name.find(DetName) + DetName.length();
+   end   = name.find("_");
+
+   int numberOfCharacterInDetectorNumber = (int)end - (int)start;
+
+   for (unsigned int i = start; i < start + numberOfCharacterInDetectorNumber; i++)
+      nbr += name[i];
+
+   return atoi(nbr.c_str());
+}
+ 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+		//Detector Number Scorer
+PSDetectorNumber::PSDetectorNumber(G4String name, G4String VolumeName, G4int depth )
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_VolumeName = VolumeName;
+}
+
+PSDetectorNumber::~PSDetectorNumber()
+{
+   ;
+}
+
+G4bool PSDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+	{
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   
+   if (edep < TriggerThreshold) return FALSE;
+   
+   G4int  index = aStep->GetTrack()->GetTrackID();
+   EvtMap->set(index+DetNumber, DetNumber);
+   return TRUE;
+}
+
+void PSDetectorNumber::Initialize(G4HCofThisEvent* HCE)
+{ 
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void PSDetectorNumber::EndOfEvent(G4HCofThisEvent*)
+{
+   ;
+}
+
+void PSDetectorNumber::clear()
+{
+   EvtMap->clear();
+}
+
+void PSDetectorNumber::DrawAll()
+{
+   ;
+}
+
+void PSDetectorNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
+   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
+   for (; itr != EvtMap->GetMap()->end(); itr++) {
+      G4cout << "  copy no.: " << itr->first
+      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
+      << G4endl;
+   }
+}
+
+
+
+
 // Energy Scorer (deal with multiple particle hit)
 
-PSEnergy::PSEnergy(G4String name, G4int depth)
+PSEnergy::PSEnergy(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	m_VolumeName = VolumeName;
 }
 
 PSEnergy::~PSEnergy()
@@ -41,12 +133,14 @@ PSEnergy::~PSEnergy()
 
 G4bool PSEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	 int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
+   if (edep < TriggerThreshold) return FALSE;
    
    G4int  index = aStep->GetTrack()->GetTrackID();
    
-   EvtMap->add(index, edep);
+   EvtMap->add(index+DetNumber, edep);
    return TRUE;
 }
 
@@ -89,24 +183,25 @@ void PSEnergy::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //TOF Scorer//
-PSTOF::PSTOF(G4String name, G4int depth)
+PSTOF::PSTOF(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
-   ;
+   m_VolumeName = VolumeName;
 }
 
 PSTOF::~PSTOF()
 {
-   ;
 }
 
 G4bool PSTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+   int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName); 
+
    G4double TOF  = aStep->GetPreStepPoint()->GetGlobalTime();
    G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
+   if (edep < TriggerThreshold) return FALSE;
    G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, TOF);
+   EvtMap->set(index+DetNumber, TOF);
    return TRUE;
 }
 
@@ -122,7 +217,6 @@ void PSTOF::Initialize(G4HCofThisEvent* HCE)
 
 void PSTOF::EndOfEvent(G4HCofThisEvent*)
 {
-   ;
 }
 
 void PSTOF::clear()
@@ -144,9 +238,10 @@ void PSTOF::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Interaction coordinates X
-PSInteractionCoordinatesX::PSInteractionCoordinatesX(G4String name, G4int depth)
+PSInteractionCoordinatesX::PSInteractionCoordinatesX(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	 m_VolumeName = VolumeName;
 }
 
 PSInteractionCoordinatesX::~PSInteractionCoordinatesX()
@@ -155,11 +250,13 @@ PSInteractionCoordinatesX::~PSInteractionCoordinatesX()
 
 G4bool PSInteractionCoordinatesX::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    G4double pos_x = POS.x() / mm;
 
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, pos_x);
+   EvtMap->set(index+DetNumber, pos_x);
    return TRUE;
 }
 
@@ -196,9 +293,10 @@ void PSInteractionCoordinatesX::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Interaction coordinates Y
-PSInteractionCoordinatesY::PSInteractionCoordinatesY(G4String name, G4int depth)
+PSInteractionCoordinatesY::PSInteractionCoordinatesY(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	 m_VolumeName = VolumeName;
 }
 
 PSInteractionCoordinatesY::~PSInteractionCoordinatesY()
@@ -207,16 +305,19 @@ PSInteractionCoordinatesY::~PSInteractionCoordinatesY()
 
 G4bool PSInteractionCoordinatesY::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    G4double pos_y = POS.y() / mm;
 
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, pos_y);
+   EvtMap->set(index+DetNumber, pos_y);
    return TRUE;
 }
 
 void PSInteractionCoordinatesY::Initialize(G4HCofThisEvent* HCE)
 {
+
    EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
@@ -248,9 +349,10 @@ void PSInteractionCoordinatesY::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Interaction coordinates Z
-PSInteractionCoordinatesZ::PSInteractionCoordinatesZ(G4String name, G4int depth)
+PSInteractionCoordinatesZ::PSInteractionCoordinatesZ(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	 m_VolumeName = VolumeName;
 }
 
 PSInteractionCoordinatesZ::~PSInteractionCoordinatesZ()
@@ -259,11 +361,13 @@ PSInteractionCoordinatesZ::~PSInteractionCoordinatesZ()
 
 G4bool PSInteractionCoordinatesZ::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    G4double pos_z = POS.z() / mm;
 
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, pos_z);
+   EvtMap->set(index+DetNumber, pos_z);
    return TRUE;
 }
 
@@ -301,9 +405,10 @@ void PSInteractionCoordinatesZ::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Interaction coordinates Angle Theta
-PSInteractionCoordinatesAngleTheta::PSInteractionCoordinatesAngleTheta(G4String name, G4int depth)
+PSInteractionCoordinatesAngleTheta::PSInteractionCoordinatesAngleTheta(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	 m_VolumeName = VolumeName;
 }
 
 PSInteractionCoordinatesAngleTheta::~PSInteractionCoordinatesAngleTheta()
@@ -312,11 +417,13 @@ PSInteractionCoordinatesAngleTheta::~PSInteractionCoordinatesAngleTheta()
 
 G4bool PSInteractionCoordinatesAngleTheta::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    G4double angle_theta = POS.theta() / deg;
 
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, angle_theta);
+   EvtMap->set(index+DetNumber, angle_theta);
    return TRUE;
 }
 
@@ -354,9 +461,10 @@ void PSInteractionCoordinatesAngleTheta::PrintAll()
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 // Interaction coordinates Angle Phi
-PSInteractionCoordinatesAnglePhi::PSInteractionCoordinatesAnglePhi(G4String name, G4int depth)
+PSInteractionCoordinatesAnglePhi::PSInteractionCoordinatesAnglePhi(G4String name, G4String VolumeName, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
+	 m_VolumeName = VolumeName;
 }
 
 PSInteractionCoordinatesAnglePhi::~PSInteractionCoordinatesAnglePhi()
@@ -365,12 +473,14 @@ PSInteractionCoordinatesAnglePhi::~PSInteractionCoordinatesAnglePhi()
 
 G4bool PSInteractionCoordinatesAnglePhi::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	int DetNumber = PickUpDetectorNumber(aStep, m_VolumeName) ; 
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    G4double angle_phi = POS.phi() / deg;
    if (angle_phi < 0) angle_phi += 360;
 
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, angle_phi);
+   EvtMap->set(index+DetNumber, angle_phi);
    return TRUE;
 }
 
@@ -405,77 +515,4 @@ void PSInteractionCoordinatesAnglePhi::PrintAll()
    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
 }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-		//Detector Number Scorer
-PSDetectorNumber::PSDetectorNumber(G4String name, G4int depth, G4String VolumeName )
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-   m_VolumeName = VolumeName;
-}
-
-PSDetectorNumber::~PSDetectorNumber()
-{
-   ;
-}
-
-G4bool PSDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr ;
-   size_t found;
-   found=name.find(m_VolumeName);
-   found = found + m_VolumeName.length();
-   
-   int numberOfCharacterInDetectorNumber = name.length() - (int)found  ;
-
-	for( int i = found ; i < found + numberOfCharacterInDetectorNumber ; i++ )
-			nbr += name[i] ; 
-		
-   G4int DetNbr = atoi( nbr.c_str() ) ;
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   
-   if (edep < 100*keV) return FALSE;
-   
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   
-   EvtMap->set(index, DetNbr);
-   return TRUE;
-}
-
-void PSDetectorNumber::Initialize(G4HCofThisEvent* HCE)
-{ 
-   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void PSDetectorNumber::EndOfEvent(G4HCofThisEvent*)
-{
-   ;
-}
-
-void PSDetectorNumber::clear()
-{
-   EvtMap->clear();
-}
-
-void PSDetectorNumber::DrawAll()
-{
-   ;
-}
 
-void PSDetectorNumber::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
diff --git a/NPSimulation/src/MUST2Array.cc b/NPSimulation/src/MUST2Array.cc
index 3040dec99e7980a88ec584555e587fcab00a2aa1..8b18d4b053b8d28e568af766f7d27e05afb65bbd 100644
--- a/NPSimulation/src/MUST2Array.cc
+++ b/NPSimulation/src/MUST2Array.cc
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : October 2009                                             *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This file describe the MUST2 charge particle Detector                    *
@@ -157,10 +157,10 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
    G4PVPlacement* PVPBuffer ;
 
 
-   G4Trd*           solidMM = new G4Trd("MM" + DetectorNumber, 0.5*FaceFront, 0.5*FaceBack, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length);
-   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, m_MaterialIron, "MM" + DetectorNumber, 0, 0, 0)                                ;
+   G4Trd*           solidMM = new G4Trd("MUST2Telescope" + DetectorNumber, 0.5*FaceFront, 0.5*FaceBack, 0.5*FaceFront, 0.5*FaceBack, 0.5*Length);
+   G4LogicalVolume* logicMM = new G4LogicalVolume(solidMM, m_MaterialIron, "MUST2Telescope" + DetectorNumber, 0, 0, 0)                                ;
 
-   G4String Name = "MM" + DetectorNumber ;
+   G4String Name = "MUST2Telescope" + DetectorNumber ;
 
 
    PVPBuffer =    new G4PVPlacement(G4Transform3D(*MMrot, MMpos)      ,
@@ -180,42 +180,10 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
    G4Trd*           solidVacBox = new G4Trd("solidVacBox", 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*SiliconFace, 0.5*CsIFaceFront, 0.5*VacBoxThickness);
    G4LogicalVolume* logicVacBox = new G4LogicalVolume(solidVacBox, m_MaterialVacuum, "logicVacBox", 0, 0, 0);
 
-   PVPBuffer = new G4PVPlacement(0, positionVacBox, logicVacBox, "M" + DetectorNumber + "VacBox", logicMM, false, 0);
+   PVPBuffer = new G4PVPlacement(0, positionVacBox, logicVacBox, Name + "_VacBox", logicMM, false, 0);
 
    logicVacBox->SetVisAttributes(G4VisAttributes::Invisible);
 
-// Add a degrader plate between Si and CsI:
-
-   /*
-   G4Box*                   Degrader = new G4Box("Degrader" , 50*mm , 50*mm , 0.1*mm );
-   G4LogicalVolume*     logicDegrader = new G4LogicalVolume( Degrader , Harvar, "logicDegrader",0,0,0)         ;
-     PVPBuffer = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicDegrader,"Degrader",logicVacBox,false,0) ;
-
-
-      /*
-      //Place two marker to identify the u and v axis on silicon face:
-      //marker are placed a bit before the silicon itself so they don't perturbate simulation
-      //Uncomment to help debugging or if you want to understand the way the code work.
-      //I should recommand to Comment it during simulation to avoid perturbation of simulation
-      //Remember G4 is limitationg step on geometry constraints.
-
-      G4ThreeVector positionMarkerU = CT*0.98 + MMu*SiliconFace/4;
-      G4Box*          solidMarkerU = new G4Box( "solidMarkerU" , SiliconFace/4 , 1*mm , 1*mm )              ;
-      G4LogicalVolume* logicMarkerU = new G4LogicalVolume( solidMarkerU , Vacuum , "logicMarkerU",0,0,0)       ;
-        PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerU),logicMarkerU,"MarkerU",world,false,0) ;
-
-      G4VisAttributes* MarkerUVisAtt= new G4VisAttributes(G4Colour(0.,0.,0.5));//blue
-      logicMarkerU->SetVisAttributes(MarkerUVisAtt);
-
-
-      G4ThreeVector positionMarkerV = CT*0.98 + MMv*SiliconFace/4;
-      G4Box*          solidMarkerV = new G4Box( "solidMarkerU" , 1*mm , SiliconFace/4 , 1*mm )              ;
-      G4LogicalVolume* logicMarkerV = new G4LogicalVolume( solidMarkerV , Vacuum , "logicMarkerV",0,0,0)       ;
-        PVPBuffer = new G4PVPlacement(G4Transform3D(*MMrot,positionMarkerV),logicMarkerV,"MarkerV",world,false,0) ;
-
-      G4VisAttributes* MarkerVVisAtt= new G4VisAttributes(G4Colour(0.,0.5,0.5));//green
-      logicMarkerV->SetVisAttributes(MarkerVVisAtt); */
-
 ////////////////////////////////////////////////////////////////
 /////////////////Si Strip Construction//////////////////////////
 ////////////////////////////////////////////////////////////////
@@ -227,8 +195,8 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
       G4Box*           solidAluStrip = new G4Box("AluBox", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*AluStripThickness);
       G4LogicalVolume* logicAluStrip = new G4LogicalVolume(solidAluStrip, m_MaterialAluminium, "logicAluStrip", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, "M" + DetectorNumber + "AluStripFront", logicMM, false, 0);
-      PVPBuffer = new G4PVPlacement(0, positionAluStripBack, logicAluStrip, "M" + DetectorNumber + "AluStripBack", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionAluStripFront, logicAluStrip, Name + "_AluStripFront", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionAluStripBack, logicAluStrip, Name + "_AluStripBack", logicMM, false, 0);
 
       logicAluStrip->SetVisAttributes(G4VisAttributes::Invisible);
 
@@ -237,7 +205,7 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
       G4Box*           solidSilicon = new G4Box("solidSilicon", 0.5*SiliconFace, 0.5*SiliconFace, 0.5*SiliconThickness);
       G4LogicalVolume* logicSilicon = new G4LogicalVolume(solidSilicon, m_MaterialSilicon, "logicSilicon", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, "M" + DetectorNumber + "Silicon", logicMM, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionSilicon, logicSilicon, Name + "_Silicon", logicMM, false, 0);
 
 
       ///Set Silicon strip sensible
@@ -255,38 +223,33 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
    if (wSiLi) {
       G4double SiLiSpace = 8 * mm;
 
-      G4RotationMatrix* rotSiLi = Rotation(0., 0., 0.);
-
-      G4ThreeVector positionSiLi = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0);
-      G4ThreeVector positionSiLi2 = G4ThreeVector(0.25 * SiliconFace + 0.5 * SiLiSpace, 0, 0);
-
-      G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiLiFaceX, 0.5*SiLiFaceY, 0.5*SiLiThickness);
+      G4RotationMatrix* rotSiLi = new G4RotationMatrix(0,0,-90*deg); //Rotation(0., 0., 0.);
 
-      G4LogicalVolume* logicSiLi = new G4LogicalVolume(solidSiLi, m_MaterialAluminium, "SiLi" + DetectorNumber, 0, 0, 0);
-
-      // First Si(Li) 2 time 4 detectore
-      PVPBuffer =  new G4PVPlacement(G4Transform3D(*rotSiLi, positionSiLi)  ,
-            logicSiLi                        ,
-            "SiLi" + DetectorNumber               ,
-            logicVacBox                      ,
-            false                         ,
-            0);
+     // G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiLiFaceX, 0.5*SiLiFaceY, 0.5*SiLiThickness);
+     
+			G4Box* solidSiLi = new G4Box("SiLi", 0.5*SiliconFace+0.5*SiLiSpace, 0.5*SiliconFace, 0.5*SiLiThickness);
+			
+      G4LogicalVolume* logicSiLi = new G4LogicalVolume(solidSiLi, m_MaterialAluminium, Name + "_SiLi" , 0, 0, 0);
 
-      // Second Si(Li) 2 time 4 detectore
-      PVPBuffer =  new G4PVPlacement(G4Transform3D(*rotSiLi, positionSiLi2) ,
-            logicSiLi                        ,
-            "SiLi" + DetectorNumber               ,
-            logicVacBox                      ,
-            false                         ,
-            1);
+			PVPBuffer =  new G4PVPlacement( G4Transform3D(*rotSiLi, G4ThreeVector(0,0,0) ) 	,
+													            logicSiLi               												,
+													            Name + "_SiLi"           												,
+													            logicVacBox              												,
+													            false                    												,
+													            0												 												);
 
       // SiLi are placed inside of the VacBox...
       // Left/Right define when looking to detector from Si to CsI
-      G4double SiLi_HighY_Upper = 19.86 * mm;
-      G4double SiLi_HighY_Center = 25.39 * mm ;
-      G4double SiLi_WidthX_Left  = 22.85 * mm;
-      G4double SiLi_WidthX_Right = 24.9 * mm  ;
-      G4double SiLi_ShiftX    = 0.775 * mm ;
+      G4double SiLi_HighY_Upper 	= 19.86 * mm	;
+      G4double SiLi_HighY_Center 	= 25.39 * mm 	;
+      G4double SiLi_WidthX_Left  	= 22.85 * mm	;
+      G4double SiLi_WidthX_Right 	= 24.9	* mm  ;
+      G4double SiLi_ShiftX    		= 0.775 * mm 	;
+
+
+			//	SiLi are organized by two group of 8 Up(9 to 15) and Down(1 to 8).
+			G4ThreeVector ShiftSiLiUp 	 = G4ThreeVector(-0.25 * SiliconFace - 0.5 * SiLiSpace, 0, 0)	;
+      G4ThreeVector ShiftSiLiDown  = G4ThreeVector(0.25  * SiliconFace + 0.5 * SiLiSpace, 0, 0)	;
 
       // SiLi : left side of SiLi detector
       G4Box* solidSiLi_LT  = new G4Box("SiLi_LT"  , 0.5*SiLi_WidthX_Left  , 0.5*SiLi_HighY_Upper   , 0.5*SiLiThickness);
@@ -300,58 +263,139 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 
       G4LogicalVolume* logicSiLi_LT    = new G4LogicalVolume(solidSiLi_LT   , m_MaterialSilicon , "SiLi_LT"  , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_RT    = new G4LogicalVolume(solidSiLi_RT   , m_MaterialSilicon , "SiLi_RT"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1 , m_MaterialSilicon , "SiLi_LC1"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1 , m_MaterialSilicon , "SiLi_RC1"  , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_LC1   = new G4LogicalVolume(solidSiLi_LC1 	, m_MaterialSilicon , "SiLi_LC1" , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_RC1   = new G4LogicalVolume(solidSiLi_RC1 	, m_MaterialSilicon , "SiLi_RC1" , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_LB    = new G4LogicalVolume(solidSiLi_LB   , m_MaterialSilicon , "SiLi_LB"  , 0 , 0 , 0);
       G4LogicalVolume* logicSiLi_RB    = new G4LogicalVolume(solidSiLi_RB   , m_MaterialSilicon , "SiLi_RB"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2 , m_MaterialSilicon , "SiLi_LC2"  , 0 , 0 , 0);
-      G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2 , m_MaterialSilicon , "SiLi_RC2"  , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_LC2   = new G4LogicalVolume(solidSiLi_LC2 	, m_MaterialSilicon , "SiLi_LC2" , 0 , 0 , 0);
+      G4LogicalVolume* logicSiLi_RC2   = new G4LogicalVolume(solidSiLi_RC2 	, m_MaterialSilicon , "SiLi_RC2" , 0 , 0 , 0);
 
       G4double interSiLi = 0.5 * mm;
 
       // Top
-      G4ThreeVector positionSiLi_LT = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+      G4ThreeVector positionSiLi_LT_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
             0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
             0);
 
-      G4ThreeVector positionSiLi_RT = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LT_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RT_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
             0);
 
-      G4ThreeVector positionSiLi_LC1 = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+			positionSiLi_RT_up += ShiftSiLiUp ;
+			
+      G4ThreeVector positionSiLi_LC1_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
             0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
             0);
 
-      G4ThreeVector positionSiLi_RC1 = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LC1_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RC1_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
             0);
 
-      // Bottom
-      G4ThreeVector positionSiLi_LB = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+			positionSiLi_RC1_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_LB_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
             -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
             0);
 
-      G4ThreeVector positionSiLi_RB = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+			positionSiLi_LB_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RB_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
             -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
             0);
 
-      G4ThreeVector positionSiLi_LC2 = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+			positionSiLi_RB_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_LC2_up = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
             0);
 
-      G4ThreeVector positionSiLi_RC2 = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
+			positionSiLi_LC2_up += ShiftSiLiUp ;
+
+      G4ThreeVector positionSiLi_RC2_up = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
             -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
+            0);
+  
+			positionSiLi_RC2_up += ShiftSiLiUp ;
+          
+            
+       // Down
+      G4ThreeVector positionSiLi_LT_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
             0);
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT  , logicSiLi_LT  , "M" + DetectorNumber + "SiLi_LT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT  , logicSiLi_RT  , "M" + DetectorNumber + "SiLi_RT"  , logicSiLi , false , 0)  ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1 , logicSiLi_LC1 , "M" + DetectorNumber + "SiLi_LC1" , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1 , logicSiLi_RC1 , "M" + DetectorNumber + "SiLi_RC1" , logicSiLi , false , 0)   ;
+			positionSiLi_LT_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RT_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            0.5 * SiLi_HighY_Upper  + SiLi_HighY_Center + 1.5 * interSiLi   ,
+            0);
+
+			positionSiLi_RT_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LC1_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+            0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
+            0);
+
+			positionSiLi_LC1_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RC1_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            0.5 * SiLi_HighY_Center + 0.5 * interSiLi                 ,
+            0);
+
+			positionSiLi_RC1_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LB_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX            ,
+            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
+            0);
+
+			positionSiLi_LB_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RB_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                     ,
+            -0.5 * SiLi_HighY_Upper  - SiLi_HighY_Center - 1.5 * interSiLi  ,
+            0);
+
+			positionSiLi_RB_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_LC2_down = G4ThreeVector(-0.5 * SiLi_WidthX_Left - interSiLi - SiLi_ShiftX           ,
+            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
+            0);
+
+			positionSiLi_LC2_down += ShiftSiLiDown ;
+
+      G4ThreeVector positionSiLi_RC2_down = G4ThreeVector(0.5 * SiLi_WidthX_Right - SiLi_ShiftX                    ,
+            -0.5 * SiLi_HighY_Center - 0.5 * interSiLi                ,
+            0);
+            
+			positionSiLi_RC2_down += ShiftSiLiDown ;
+            
+			
+			// up
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT_up  , logicSiLi_LT  , Name + "_SiLi_Pad16"   , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT_up  , logicSiLi_RT  , Name + "_SiLi_Pad15"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1_up , logicSiLi_LC1 , Name + "_SiLi_Pad14" 	, logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1_up , logicSiLi_RC1 , Name + "_SiLi_Pad13" 	, logicSiLi , false , 0)  ;
+
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB_up  , logicSiLi_LB  , Name + "_SiLi_Pad9"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB_up  , logicSiLi_RB  , Name + "_SiLi_Pad10"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2_up , logicSiLi_LC2 , Name + "_SiLi_Pad11" 	, logicSiLi , false , 0) 	;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2_up , logicSiLi_RC2 , Name + "_SiLi_Pad12" 	, logicSiLi , false , 0)	;
+
+			
+			// down
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LT_down  , logicSiLi_LT  , Name + "_SiLi_Pad7"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RT_down  , logicSiLi_RT  , Name + "_SiLi_Pad8"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC1_down , logicSiLi_LC1 , Name + "_SiLi_Pad5" 	, logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC1_down , logicSiLi_RC1 , Name + "_SiLi_Pad6" 	, logicSiLi , false , 0)  ;
+
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB_down  , logicSiLi_LB  , Name + "_SiLi_Pad2"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB_down  , logicSiLi_RB  , Name + "_SiLi_Pad1"  , logicSiLi , false , 0)  ;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2_down , logicSiLi_LC2 , Name + "_SiLi_Pad4" 	, logicSiLi , false , 0) 	;
+      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2_down , logicSiLi_RC2 , Name + "_SiLi_Pad3" 	, logicSiLi , false , 0)	;
+
 
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LB  , logicSiLi_LB  , "M" + DetectorNumber + "SiLi_LB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RB  , logicSiLi_RB  , "M" + DetectorNumber + "SiLi_RB"  , logicSiLi , false , 0)   ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_LC2 , logicSiLi_LC2 , "M" + DetectorNumber + "SiLi_LC2" , logicSiLi , false , 0) ;
-      PVPBuffer = new G4PVPlacement(0 , positionSiLi_RC2 , logicSiLi_RC2 , "M" + DetectorNumber + "SiLi_RC2" , logicSiLi , false , 0) ;
 
       logicSiLi->SetVisAttributes(G4VisAttributes(G4Colour(1, 1., 1.)));
 
@@ -367,15 +411,18 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
       logicSiLi_RC2->SetSensitiveDetector(m_SiLiScorer);
 
       // Mark blue a SiLi to see telescope orientation
-      logicSiLi_LT->SetVisAttributes(G4VisAttributes(G4Colour(0, 0., 1.)));
+      logicSiLi_LT->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
       logicSiLi_RT->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
       logicSiLi_LC1->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
       logicSiLi_RC1->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
 
-      logicSiLi_LB->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
+      logicSiLi_LB->SetVisAttributes(G4VisAttributes(G4Colour(0, 0, 1.)));
       logicSiLi_RB->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
       logicSiLi_LC2->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
       logicSiLi_RC2->SetVisAttributes(G4VisAttributes(G4Colour(0, 1., 0)));
+      
+      
+      delete rotSiLi;
    }
 
 ////////////////////////////////////////////////////////////////
@@ -383,21 +430,19 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 ////////////////////////////////////////////////////////////////
 
    if (wCsI) {
-      //G4double DistInterCsI= 1.*mm;//<-Set the distance between CsI cristal. Exact value yet unknown
-      G4double DistInterCsI = 0.2 * mm;
-
+   
       G4ThreeVector positionCsI = G4ThreeVector(0, 0, CsI_PosZ);
       G4Trd* solidCsI = new G4Trd("csI", 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIFaceFront, 0.5*CsIFaceBack, 0.5*CsIThickness);
 
-      G4LogicalVolume* logicCsI = new G4LogicalVolume(solidCsI, m_MaterialAluminium, "CsI" + DetectorNumber, 0, 0, 0);
-      PVPBuffer = new G4PVPlacement(0, positionCsI, logicCsI, "CsI" + DetectorNumber, logicMM, false, 0);
+      G4LogicalVolume* logicCsI = new G4LogicalVolume(solidCsI, m_MaterialAluminium, Name + "_CsI_Mylar", 0, 0, 0);
+      PVPBuffer = new G4PVPlacement(0, positionCsI, logicCsI, Name + "_CsI_Mylar", logicMM, false, 0);
 
       G4ThreeVector   positionMylarCsI = G4ThreeVector(0, 0, MylarCsIThickness * 0.5 - CsIThickness * 0.5);
 
       G4Box*           solidMylarCsI = new G4Box("MylarCsIBox", 0.5*CsIFaceFront, 0.5*CsIFaceFront, 0.5*MylarCsIThickness);
-      G4LogicalVolume* logicMylarCsI = new G4LogicalVolume(solidMylarCsI, m_MaterialMyl, "logicMylarCsI", 0, 0, 0);
+      G4LogicalVolume* logicMylarCsI = new G4LogicalVolume(solidMylarCsI, m_MaterialMyl, Name + "_CsI_Mylar", 0, 0, 0);
 
-      PVPBuffer = new G4PVPlacement(0, positionMylarCsI, logicMylarCsI, "M" + DetectorNumber + "MylarCsI", logicCsI, false, 0);
+      PVPBuffer = new G4PVPlacement(0, positionMylarCsI, logicMylarCsI, Name + "_CsI_Mylar", logicCsI, false, 0);
 
 
       logicCsI->SetVisAttributes(G4VisAttributes::Invisible);
@@ -405,43 +450,43 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
 
       // Cristal1
       G4Trap* solidCristal1 = new G4Trap("Cristal1", 40.*mm / 2., 6.693896*deg, 41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal1 = new G4LogicalVolume(solidCristal1, m_MaterialCsI, "Cristal1", 0, 0, 0);
+      G4LogicalVolume* logicCristal1 = new G4LogicalVolume(solidCristal1, m_MaterialCsI, Name + "_CsI_Cristal1", 0, 0, 0);
 
       // Cristal2
       G4Trap* solidCristal2 = new G4Trap("Cristal2", 40.*mm / 2., 17.8836*deg, (74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal2 = new G4LogicalVolume(solidCristal2, m_MaterialCsI, "Cristal2", 0, 0, 0);
+      G4LogicalVolume* logicCristal2 = new G4LogicalVolume(solidCristal2, m_MaterialCsI, Name + "_CsI_Cristal2", 0, 0, 0);
 
       // Cristal3
       G4Trap* solidCristal3 = new G4Trap("Cristal3", 40.*mm / 2., 18.243*deg, 13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal3 = new G4LogicalVolume(solidCristal3, m_MaterialCsI, "Cristal3", 0, 0, 0);
+      G4LogicalVolume* logicCristal3 = new G4LogicalVolume(solidCristal3, m_MaterialCsI, Name + "_CsI_Cristal3", 0, 0, 0);
 
       // Cristal4
 
       G4Trap* solidCristal4 = new G4Trap("Cristal4", 40.*mm / 2., 24.0482*deg, 44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal4 = new G4LogicalVolume(solidCristal4, m_MaterialCsI, "Cristal4", 0, 0, 0);
+      G4LogicalVolume* logicCristal4 = new G4LogicalVolume(solidCristal4, m_MaterialCsI, Name + "_CsI_Cristal4", 0, 0, 0);
 
 
       // Cristal1s
 
       G4Trap* solidCristal1s = new G4Trap("Cristal1s", 40.*mm / 2., 6.693896*deg, -41.97814*deg, 33.1*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 26.9*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal1s = new G4LogicalVolume(solidCristal1s, m_MaterialCsI, "Cristal1s", 0, 0, 0);
+      G4LogicalVolume* logicCristal1s = new G4LogicalVolume(solidCristal1s, m_MaterialCsI, Name + "_CsI_Cristal1s", 0, 0, 0);
 
       // Cristal2s
 
       G4Trap* solidCristal2s = new G4Trap("Cristal2s", 40.*mm / 2., 17.8836*deg, -(74.3122 + 180)*deg, 43.49*mm / 2., 37.39*mm / 2., 37.39*mm / 2., 0.*deg, 31.0377*mm / 2., 30.41*mm / 2., 30.41*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal2s = new G4LogicalVolume(solidCristal2s, m_MaterialCsI, "Cristal2s", 0, 0, 0);
+      G4LogicalVolume* logicCristal2s = new G4LogicalVolume(solidCristal2s, m_MaterialCsI, Name + "_CsI_Cristal2s", 0, 0, 0);
 
       // Cristal3s
 
       G4Trap* solidCristal3s = new G4Trap("Cristal3s", 40.*mm / 2., 18.243*deg, -13.5988*deg, 33.11*mm / 2., 39.25*mm / 2., 39.25*mm / 2., 0.*deg, 26.91*mm / 2., 27.58*mm / 2., 27.58*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal3s = new G4LogicalVolume(solidCristal3s, m_MaterialCsI, "Cristal3s", 0, 0, 0);
+      G4LogicalVolume* logicCristal3s = new G4LogicalVolume(solidCristal3s, m_MaterialCsI, Name + "_CsI_Cristal3s", 0, 0, 0);
 
       // Cristal4s
 
       G4Trap* solidCristal4s = new G4Trap("Cristal4s", 40.*mm / 2., 24.0482*deg, -44.1148*deg, 43.49*mm / 2., 39.19*mm / 2., 39.19*mm / 2., 0.*deg, 31.04*mm / 2., 27.52*mm / 2., 27.52*mm / 2., 0.*deg);
-      G4LogicalVolume* logicCristal4s = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, "Cristal4s", 0, 0, 0);
+      G4LogicalVolume* logicCristal4s = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, Name + "_CsI_Cristal4s", 0, 0, 0);
       //to see telescope orientation
-      G4LogicalVolume* logicCristal4sbis = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, "Cristal4s", 0, 0, 0);
+      G4LogicalVolume* logicCristal4sbis = new G4LogicalVolume(solidCristal4s, m_MaterialCsI, Name + "_CsI_Cristal4s", 0, 0, 0);
 
 
       G4double XEdge1 = 16.96 * mm + DistInterCsI * 0.5;
@@ -454,10 +499,10 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
       G4ThreeVector positionCristal3 = G4ThreeVector(-XEdge2, YEdge1, 0);
       G4ThreeVector positionCristal4 = G4ThreeVector(-XEdge2, YEdge2, 0);
 
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1, logicCristal1, "M" + DetectorNumber + "Cristal1", logicCsI, false, 1);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2, logicCristal2, "M" + DetectorNumber + "Cristal2", logicCsI, false, 2);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3, logicCristal3, "M" + DetectorNumber + "Cristal3", logicCsI, false, 3);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4, logicCristal4, "M" + DetectorNumber + "Cristal4", logicCsI, false, 4);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1, logicCristal1, Name + "_CsI_Cristal1", logicCsI, false, 1);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2, logicCristal2, Name + "_CsI_Cristal2", logicCsI, false, 2);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3, logicCristal3, Name + "_CsI_Cristal3", logicCsI, false, 3);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4, logicCristal4, Name + "_CsI_Cristal4", logicCsI, false, 4);
 
 
       G4ThreeVector positionCristal1b = G4ThreeVector(XEdge1, -YEdge1, 0 * mm);
@@ -465,30 +510,30 @@ void MUST2Array::VolumeMaker(G4int TelescopeNumber ,
       G4ThreeVector positionCristal3b = G4ThreeVector(XEdge2, -YEdge1, 0);
       G4ThreeVector positionCristal4b = G4ThreeVector(XEdge2, -YEdge2, 0);
 
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1b, logicCristal1, "M" + DetectorNumber + "Cristal5", logicCsI, false, 5);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal2b, logicCristal2, "M" + DetectorNumber + "Cristal6", logicCsI, false, 6);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3b, logicCristal3, "M" + DetectorNumber + "Cristal7", logicCsI, false, 7);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4b, logicCristal4, "M" + DetectorNumber + "Cristal8", logicCsI, false, 8);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1b, logicCristal1, Name + "_CsI_Cristal5", logicCsI, false, 5);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal2b, logicCristal2, Name + "_CsI_Cristal6", logicCsI, false, 6);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3b, logicCristal3, Name + "_CsI_Cristal7", logicCsI, false, 7);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4b, logicCristal4, Name + "_CsI_Cristal8", logicCsI, false, 8);
 
       G4ThreeVector positionCristal1s = G4ThreeVector(-XEdge1, -YEdge1, 0 * mm);
       G4ThreeVector positionCristal2s = G4ThreeVector(-XEdge1, -YEdge2, 0);
       G4ThreeVector positionCristal3s = G4ThreeVector(-XEdge2, -YEdge1, 0);
       G4ThreeVector positionCristal4s = G4ThreeVector(-XEdge2, -YEdge2, 0);
 
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1s, logicCristal1s, "M" + DetectorNumber + "Cristal9", logicCsI, false, 9);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2s, logicCristal2s, "M" + DetectorNumber + "Cristal10", logicCsI, false, 10);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3s, logicCristal3s, "M" + DetectorNumber + "Cristal11", logicCsI, false, 11);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4s, logicCristal4sbis, "M" + DetectorNumber + "Cristal12", logicCsI, false, 12);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal1s, logicCristal1s, Name + "_CsI_Cristal9", logicCsI, false, 9);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal2s, logicCristal2s, Name + "_CsI_Cristal10", logicCsI, false, 10);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal3s, logicCristal3s, Name + "_CsI_Cristal11", logicCsI, false, 11);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 0.), positionCristal4s, logicCristal4sbis, Name + "_CsI_Cristal12", logicCsI, false, 12);
 
       G4ThreeVector positionCristal1sb = G4ThreeVector(XEdge1, YEdge1, 0 * mm);
       G4ThreeVector positionCristal2sb = G4ThreeVector(XEdge1, YEdge2, 0);
       G4ThreeVector positionCristal3sb = G4ThreeVector(XEdge2, YEdge1, 0);
       G4ThreeVector positionCristal4sb = G4ThreeVector(XEdge2, YEdge2, 0);
 
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1sb, logicCristal1s, "M" + DetectorNumber + "Cristal13", logicCsI, false, 13);
-      PVPBuffer = new G4PVPlacement(Rotation(180, 0, 0), positionCristal2sb, logicCristal2s, "M" + DetectorNumber + "Cristal14", logicCsI, false, 14);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3sb, logicCristal3s, "M" + DetectorNumber + "Cristal15", logicCsI, false, 15);
-      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4sb, logicCristal4s, "M" + DetectorNumber + "Cristal16", logicCsI, false, 16);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal1sb, logicCristal1s, Name + "_CsI_Cristal13", logicCsI, false, 13);
+      PVPBuffer = new G4PVPlacement(Rotation(180, 0, 0), positionCristal2sb, logicCristal2s, Name + "_CsI_Cristal14", logicCsI, false, 14);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal3sb, logicCristal3s, Name + "_CsI_Cristal15", logicCsI, false, 15);
+      PVPBuffer = new G4PVPlacement(Rotation(180., 0., 180.), positionCristal4sb, logicCristal4s, Name + "_CsI_Cristal16", logicCsI, false, 16);
 
       ///Set CsI sensible
       logicCristal1->SetSensitiveDetector(m_CsIScorer);
@@ -815,15 +860,15 @@ void MUST2Array::ReadConfiguration(string Path)
 // Called After DetecorConstruction::AddDetector Method
 void MUST2Array::ConstructDetector(G4LogicalVolume* world)
 {
-   G4RotationMatrix* MMrot  	= NULL              		;
-   G4ThreeVector     MMpos  	= G4ThreeVector(0, 0, 0) 	;
+   G4RotationMatrix* MMrot  		= NULL              			;
+   G4ThreeVector     MMpos  		= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMu       	= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMv       	= G4ThreeVector(0, 0, 0) 	;
    G4ThreeVector     MMw       	= G4ThreeVector(0, 0, 0) 	;
-   G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0)  	;
-   bool           	 Si     	= true           			;
-   bool          	 SiLi   	= true           			;
-   bool           	 CsI    	= true           			;
+   G4ThreeVector     MMCenter 	= G4ThreeVector(0, 0, 0)  ;
+   bool           	 Si     		= true           					;
+   bool          	 	 SiLi   		= true           					;
+   bool           	 CsI    		= true           					;
 
    G4int             NumberOfTelescope = m_DefinitionType.size() ;
 
@@ -926,102 +971,115 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 
 // Si
 	std::map<G4int, G4int*>::iterator DetectorNumber_itr    ;
-	std::map<G4int, G4double*>::iterator Energy_itr     	;
-	std::map<G4int, G4double*>::iterator Time_itr    		;
-	std::map<G4int, G4double*>::iterator X_itr       		;
-	std::map<G4int, G4double*>::iterator Y_itr       		;
-	std::map<G4int, G4double*>::iterator Pos_X_itr       	;
-	std::map<G4int, G4double*>::iterator Pos_Y_itr       	;
-	std::map<G4int, G4double*>::iterator Pos_Z_itr       	;
+	std::map<G4int, G4double*>::iterator Energy_itr     		;
+	std::map<G4int, G4double*>::iterator Time_itr    				;
+	std::map<G4int, G4int*>::iterator X_itr       				;
+	std::map<G4int, G4int*>::iterator Y_itr       				;
+	std::map<G4int, G4double*>::iterator Pos_X_itr     	  	;
+	std::map<G4int, G4double*>::iterator Pos_Y_itr     	  	;
+	std::map<G4int, G4double*>::iterator Pos_Z_itr       		;
 	std::map<G4int, G4double*>::iterator Ang_Theta_itr      ;
 	std::map<G4int, G4double*>::iterator Ang_Phi_itr       	;
 	
-	G4THitsMap<G4int>*	  DetectorNumberHitMap				;      
-	G4THitsMap<G4double>* EnergyHitMap              		;
-	G4THitsMap<G4double>* TimeHitMap             			;
-	G4THitsMap<G4double>* XHitMap                			;	
-	G4THitsMap<G4double>* YHitMap               			;
-	G4THitsMap<G4double>* PosXHitMap                		;
-	G4THitsMap<G4double>* PosYHitMap                		;
-	G4THitsMap<G4double>* PosZHitMap                		;
-	G4THitsMap<G4double>* AngThetaHitMap                	;
-	G4THitsMap<G4double>* AngPhiHitMap                		;
-
-// NULL pointer are given to avoid warning at compilation
+	G4THitsMap<G4int>*	  DetectorNumberHitMap							;      
+	G4THitsMap<G4double>* EnergyHitMap              				;
+	G4THitsMap<G4double>* TimeHitMap             						;
+	G4THitsMap<G4int>* XHitMap                						;	
+	G4THitsMap<G4int>* YHitMap               						;
+	G4THitsMap<G4double>* PosXHitMap                				;
+	G4THitsMap<G4double>* PosYHitMap                				;
+	G4THitsMap<G4double>* PosZHitMap                				;
+	G4THitsMap<G4double>* AngThetaHitMap               			;
+	G4THitsMap<G4double>* AngPhiHitMap                			;
 
 // Si(Li)
    std::map<G4int, G4double*>::iterator SiLiEnergy_itr 		;
-   G4THitsMap<G4double>* 				SiLiEnergyHitMap	;
+   std::map<G4int, G4int*>::iterator SiLiPadNbr_itr 		;
+   G4THitsMap<G4double>* 				SiLiEnergyHitMap					;
+   G4THitsMap<G4int>* 				SiLiPadNbrHitMap					;
+   
 // CsI
    std::map<G4int, G4double*>::iterator CsIEnergy_itr  		;
-   G4THitsMap<G4double>* 				CsIEnergyHitMap 	;
+   std::map<G4int, G4int*>::iterator CsICristalNbr_itr ;
+   G4THitsMap<G4double>* 				CsIEnergyHitMap 					;
+   G4THitsMap<G4int>* 				CsICristalNbrHitMap 			;
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
 
     // Read the Scorer associate to the Silicon Strip
     
 	    //Detector Number
-	    G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/DetectorNumber")  	;
-	    DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))       	;
-	    DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               ;
+	    G4int StripDetCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/DetectorNumber") 		;
+	    DetectorNumberHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripDetCollectionID))       				;
+	    DetectorNumber_itr =  DetectorNumberHitMap->GetMap()->begin()                                               			;
 	    
 	    //Energy
-	    G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/StripEnergy")   ;
-	    EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           ;
-	    Energy_itr = EnergyHitMap->GetMap()->begin()                                                          		;
+	    G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripEnergy") 		;
+	    EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))           			;
+	    Energy_itr = EnergyHitMap->GetMap()->begin()                                                          						;
 
 	    //Time of Flight
-	    G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/StripTime")    	;
-	    TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               ;
-	    Time_itr = TimeHitMap->GetMap()->begin()                                                              		;
+	    G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripTime")    		;
+	    TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))               			;
+	    Time_itr = TimeHitMap->GetMap()->begin()                                                              						;
 
 	    //Strip Number X
-	    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/StripNumberX")    	;
-	    XHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                     ;
-	    X_itr = XHitMap->GetMap()->begin()                                                                    		;
+	    G4int StripXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberX")    		;
+	    XHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripXCollectionID))                     			;
+	    X_itr = XHitMap->GetMap()->begin()                                                                    						;
 
 	    //Strip Number Y
-	    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/StripNumberY")    	;
-	    YHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                     ;
-	    Y_itr = YHitMap->GetMap()->begin()                                                                    		;
+	    G4int StripYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/StripNumberY")    		;
+	    YHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripYCollectionID))                     			;
+	    Y_itr = YHitMap->GetMap()->begin()                                                                    						;
 
 	    //Interaction Coordinate X
-	    G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/InterCoordX")    ;
-	    PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))              ;
-	    Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+	    G4int InterCoordXCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordX")    ;
+	    PosXHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordXCollectionID))              			;
+	    Pos_X_itr = PosXHitMap->GetMap()->begin()                                                                   			;
 
 	    //Interaction Coordinate Y
-	    G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/InterCoordY")    ;
-	    PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))              ;
-	    Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                    ;
+	    G4int InterCoordYCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordY")    ;
+	    PosYHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordYCollectionID))             		 	;
+	    Pos_Y_itr = PosYHitMap->GetMap()->begin()                                                                  			  ;
 
 	    //Interaction Coordinate Z
-	    G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/InterCoordZ")    ;
-	    PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))              ;
-	    Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    ;
+	    G4int InterCoordZCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordZ")    ;
+	    PosZHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordZCollectionID))              			;
+	    Pos_Z_itr = PosXHitMap->GetMap()->begin()                                                                    			;
 
 	    //Interaction Coordinate Angle Theta
-	    G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/InterCoordAngTheta")    	;
+	    G4int InterCoordAngThetaCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngTheta");
 	    AngThetaHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngThetaCollectionID))                 	;
-	    Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    		;
+	    Ang_Theta_itr = AngThetaHitMap->GetMap()->begin()                                                                    				;
 
 	    //Interaction Coordinate Angle Phi
-	    G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("StripScorer/InterCoordAngPhi")    		;	
-	    AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))						;
-	    Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()																				;			
+	    G4int InterCoordAngPhiCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_StripScorer/InterCoordAngPhi")   	;	
+	    AngPhiHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(InterCoordAngPhiCollectionID))											;
+	    Ang_Phi_itr = AngPhiHitMap->GetMap()->begin()																																								;			
 
     // Read the Scorer associate to the SiLi
         //Energy
-        G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("SiLiScorer/SiLiEnergy")   ;
-        SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))     ;
-        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     ;
-
+        G4int SiLiEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiEnergy")   						;
+        SiLiEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(SiLiEnergyCollectionID))    		 							;
+        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin()                                                     									;
 
+        G4int SiLiPadNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_SiLiScorer/SiLiPadNbr")   						;
+        SiLiPadNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(SiLiPadNbrCollectionID))    		 							;
+        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin()                                                     									;
+        
     // Read the Scorer associate to the CsI crystal
         //Energy
-        G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("CsIScorer/CsIEnergy")      ;
-        CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID))       ;
-        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()                                                       ;
+        G4int CsIEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsIEnergy")     		  				;
+        CsIEnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(CsIEnergyCollectionID))      									;
+        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()                                                       									;
+        
+        G4int CsICristalNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("MUST2_CsIScorer/CsICristalNbr")     		 	;
+        CsICristalNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(CsICristalNbrCollectionID))      					;
+        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()                                                       					;
+
+
+/////////////////////
 
   	G4int sizeN = DetectorNumberHitMap->entries() 	;
     G4int sizeE = EnergyHitMap->entries() 			;
@@ -1029,55 +1087,55 @@ void MUST2Array::ReadSensitive(const G4Event* event)
     G4int sizeX = XHitMap->entries()      			;
     G4int sizeY = YHitMap->entries()    			;
 
-    // Loop on Strip energy
-    for (G4int l = 0 ; l < sizeE ; l++) {
-        G4int ETrackID  =   Energy_itr->first     ;
-        G4double E     = *(Energy_itr->second)    ;
-        G4int N = 0								  ;
+ // Loop on Telescope Number entry
+    for (G4int l = 0 ; l < sizeN ; l++) {
+        G4int N     =      *(DetectorNumber_itr->second)    ;
+        G4int NTrackID  =   DetectorNumber_itr->first - N  ;
         
-        if (E > 0) {
+      
+        if (N > 0) {
         
-	        m_Event->SetMMStripXEEnergy(RandGauss::shoot(E, ResoStrip))    ;
-	        m_Event->SetMMStripYEEnergy(RandGauss::shoot(E, ResoStrip))    ;
-
-			//  Detector Number
-	        DetectorNumber_itr = DetectorNumberHitMap->GetMap()->begin();
-	        for (G4int h = 0 ; h < sizeN ; h++) {
-	            G4int NTrackID  =   DetectorNumber_itr->first       ;
-	            G4double Nl     = *(DetectorNumber_itr->second)      ;
-
-	            if (NTrackID == ETrackID) {
-	            	N = Nl ;
-	                m_Event->SetMMStripXEDetectorNbr(N) ;
-	                m_Event->SetMMStripYEDetectorNbr(N) ;
-	                m_Event->SetMMStripXTDetectorNbr(N) ;
-	                m_Event->SetMMStripYTDetectorNbr(N) ;
+	         m_Event->SetMMStripXEDetectorNbr(N) ;
+	         m_Event->SetMMStripYEDetectorNbr(N) ;
+	         m_Event->SetMMStripXTDetectorNbr(N) ;
+	         m_Event->SetMMStripYTDetectorNbr(N) ;
+
+			//  Energy
+	        Energy_itr = EnergyHitMap->GetMap()->begin();
+	        for (G4int h = 0 ; h < sizeE ; h++) {
+	            G4int ETrackID  =   Energy_itr->first  - N      ;
+	            G4double E     = *(Energy_itr->second)      	;
+
+	            if (ETrackID == NTrackID) {
+	                 	m_Event->SetMMStripXEEnergy(RandGauss::shoot(E, ResoStrip))    ;
+	        					m_Event->SetMMStripYEEnergy(RandGauss::shoot(E, ResoStrip))    ;
 	            }
 	            
-	            else { N = 0 ;}
-	            DetectorNumber_itr++;
-	        }
+	            Energy_itr++;
+	        	}
 
 
 	        //  Time
 	        Time_itr = TimeHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeT ; h++) {
-	            G4int TTrackID  =   Time_itr->first       ;
+	            G4int TTrackID  =   Time_itr->first   - N    ;
 	            G4double T     = *(Time_itr->second)      ;
 
-	            if (TTrackID == ETrackID) {
+	            if (TTrackID == NTrackID) {
 	                m_Event->SetMMStripXTTime(RandGauss::shoot(T, ResoTimeMust)) ;
 	                m_Event->SetMMStripYTTime(RandGauss::shoot(T, ResoTimeMust)) ;
 	            }
+	            
 	            Time_itr++;
 	        }
 
-	        // X
+
+					// X
 	        X_itr = XHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int XTrackID  =   X_itr->first     ;
-	            G4double X     = *(X_itr->second)      ;
-	            if (XTrackID == ETrackID) {
+	            G4int XTrackID  =   X_itr->first  - N   ;
+	            G4int X     = *(X_itr->second)      ;
+	            if (XTrackID == NTrackID) {
 	                m_Event->SetMMStripXEStripNbr(X)   ;
 	                m_Event->SetMMStripXTStripNbr(X)   ;
 	            }
@@ -1088,9 +1146,9 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Y
 	        Y_itr = YHitMap->GetMap()->begin()  ;
 	        for (G4int h = 0 ; h < sizeY ; h++) {
-	            G4int YTrackID  =   Y_itr->first    ;
-	            G4double Y     = *(Y_itr->second)      ;
-	            if (YTrackID == ETrackID) {
+	            G4int YTrackID  =   Y_itr->first  - N  ;
+	            G4int Y     = *(Y_itr->second)      ;
+	            if (YTrackID == NTrackID) {
 	                m_Event->SetMMStripYEStripNbr(Y)   ;
 	                m_Event->SetMMStripYTStripNbr(Y)   ;
 	            }
@@ -1101,9 +1159,9 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Pos X
 	        Pos_X_itr = PosXHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int PosXTrackID =   Pos_X_itr->first     ;
+	            G4int PosXTrackID =   Pos_X_itr->first  - N   ;
 	            G4double PosX     = *(Pos_X_itr->second)      ;
-	            if (PosXTrackID == ETrackID) {
+	            if (PosXTrackID == NTrackID) {
 	                ms_InterCoord->SetDetectedPositionX(PosX) ;
 	            }
 	            Pos_X_itr++;
@@ -1112,9 +1170,9 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Pos Y
 	        Pos_Y_itr = PosYHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int PosYTrackID =   Pos_Y_itr->first     ;
+	            G4int PosYTrackID =   Pos_Y_itr->first  - N   ;
 	            G4double PosY     = *(Pos_Y_itr->second)      ;
-	            if (PosYTrackID == ETrackID) {
+	            if (PosYTrackID == NTrackID) {
 	                ms_InterCoord->SetDetectedPositionY(PosY) ;
 	            }
 	            Pos_Y_itr++;
@@ -1123,9 +1181,9 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Pos Z
 	        Pos_Z_itr = PosZHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int PosZTrackID =   Pos_Z_itr->first     ;
+	            G4int PosZTrackID =   Pos_Z_itr->first   - N  ;
 	            G4double PosZ     = *(Pos_Z_itr->second)      ;
-	            if (PosZTrackID == ETrackID) {
+	            if (PosZTrackID == NTrackID) {
 	                ms_InterCoord->SetDetectedPositionZ(PosZ) ;
 	            }
 	            Pos_Z_itr++;
@@ -1134,9 +1192,9 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Angle Theta
 	        Ang_Theta_itr = AngThetaHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int AngThetaTrackID =   Ang_Theta_itr->first     ;
+	            G4int AngThetaTrackID =   Ang_Theta_itr->first  - N   ;
 	            G4double AngTheta     = *(Ang_Theta_itr->second)      ;
-	            if (AngThetaTrackID == ETrackID) {
+	            if (AngThetaTrackID == NTrackID) {
 	                ms_InterCoord->SetDetectedAngleTheta(AngTheta) ;
 	            }
 	            Ang_Theta_itr++;
@@ -1145,72 +1203,83 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 	        // Angle Phi
 	        Ang_Phi_itr = AngPhiHitMap->GetMap()->begin();
 	        for (G4int h = 0 ; h < sizeX ; h++) {
-	            G4int AngPhiTrackID =   Ang_Phi_itr->first     ;
+	            G4int AngPhiTrackID =   Ang_Phi_itr->first  - N   ;
 	            G4double AngPhi     = *(Ang_Phi_itr->second)      ;
-	            if (AngPhiTrackID == ETrackID) {
+	            if (AngPhiTrackID == NTrackID) {
 	                ms_InterCoord->SetDetectedAnglePhi(AngPhi) ;
 	            }
 	            Ang_Phi_itr++;
 	        }
 
-	        // Si(Li)
 
+					// Si(Li)
 	        SiLiEnergy_itr = SiLiEnergyHitMap->GetMap()->begin() ;
+	        SiLiPadNbr_itr = SiLiPadNbrHitMap->GetMap()->begin() ;
+	        
 	        for (G4int h = 0 ; h < SiLiEnergyHitMap->entries() ; h++) {
-	            G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  ;
+	            G4int SiLiEnergyTrackID =   SiLiEnergy_itr->first  -N ;
 	            G4double SiLiEnergy     = *(SiLiEnergy_itr->second)   ;
 
-	            if (SiLiEnergyTrackID == ETrackID) {
+							G4int PadNbr = *(SiLiPadNbr_itr->second)   ;
+
+	            if (SiLiEnergyTrackID == NTrackID) {
 	                m_Event->SetMMSiLiEEnergy(RandGauss::shoot(SiLiEnergy, ResoSiLi)) ;
-	                m_Event->SetMMSiLiEPadNbr(1);
-	                m_Event->SetMMSiLiTPadNbr(1);
+	                m_Event->SetMMSiLiEPadNbr(PadNbr);
+	                m_Event->SetMMSiLiTPadNbr(PadNbr);
 	                m_Event->SetMMSiLiTTime(1);
 	                m_Event->SetMMSiLiTDetectorNbr(N);
 	                m_Event->SetMMSiLiEDetectorNbr(N);
 	            }
 
-	            SiLiEnergy_itr++;
+	            SiLiEnergy_itr++	;
+	            SiLiPadNbr_itr++	;
 	        }
 	        
 
-	        // CsI
-	      
-	        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  ;
+	        // CsI    
+	        CsIEnergy_itr = CsIEnergyHitMap->GetMap()->begin()  				;
+	        CsICristalNbr_itr = CsICristalNbrHitMap->GetMap()->begin()  ;
+	        
 	        for (G4int h = 0 ; h < CsIEnergyHitMap->entries() ; h++) {
-	            G4int CsIEnergyTrackID  =   CsIEnergy_itr->first      ;
-	            G4double CsIEnergy      = *(CsIEnergy_itr->second)    ;
-
-	            if (CsIEnergyTrackID == ETrackID) {
+	            G4int CsIEnergyTrackID  =   CsIEnergy_itr->first-N ;
+	            G4double CsIEnergy      = *(CsIEnergy_itr->second) ;
+		
+							G4int CristalNumber  = *(CsICristalNbr_itr->second) ;
+	            if (CsIEnergyTrackID == NTrackID) {
 	                m_Event->SetMMCsIEEnergy(RandGauss::shoot(CsIEnergy, ResoCsI*sqrt(CsIEnergy)));
-	                m_Event->SetMMCsIECristalNbr(1);
-	                m_Event->SetMMCsITCristalNbr(1);
+	                m_Event->SetMMCsIECristalNbr(CristalNumber);
+	                m_Event->SetMMCsITCristalNbr(CristalNumber);
 	                m_Event->SetMMCsITTime(1);
 	                m_Event->SetMMCsITDetectorNbr(N);
 	                m_Event->SetMMCsIEDetectorNbr(N);
 	            }
 
-	            CsIEnergy_itr++;
+	            CsIEnergy_itr++			;
+	            CsICristalNbr_itr++	;
 	        }
-	        
+
+
 
         }
 
-        Energy_itr++;
+        DetectorNumber_itr++;
     }
     
     // clear map for next event
-    DetectorNumberHitMap              ->clear();
-    EnergyHitMap   		->clear() ;
-    TimeHitMap     		->clear() ;
-    XHitMap        		->clear() ;
-    YHitMap        		->clear() ;
-    CsIEnergyHitMap		->clear() ;
-    SiLiEnergyHitMap	->clear() ;
-    PosXHitMap			->clear() ; 
-    PosYHitMap			->clear() ;
-    PosZHitMap			->clear() ;
-    AngThetaHitMap		->clear() ;
-    AngPhiHitMap		->clear() ;
+    DetectorNumberHitMap	->clear()	;
+    EnergyHitMap   				->clear() ;
+    TimeHitMap     				->clear() ;
+    XHitMap        				->clear() ;
+    YHitMap        				->clear() ;
+    SiLiEnergyHitMap			->clear() ;
+    SiLiPadNbrHitMap			->clear() ;
+    CsIEnergyHitMap				->clear() ;
+    CsICristalNbrHitMap		->clear() ;
+    PosXHitMap						->clear() ; 
+    PosYHitMap						->clear() ;
+    PosZHitMap						->clear() ;
+    AngThetaHitMap				->clear() ;
+    AngPhiHitMap					->clear() ;
      
 }
 
@@ -1219,19 +1288,21 @@ void MUST2Array::ReadSensitive(const G4Event* event)
 void MUST2Array::InitializeScorers() 
 	{ 
 		//	Silicon Associate Scorer
-		m_StripScorer = new G4MultiFunctionalDetector("StripScorer");
+		m_StripScorer = new G4MultiFunctionalDetector("MUST2_StripScorer");
+		
+		G4VPrimitiveScorer* DetNbr 														= new GENERALSCORERS::PSDetectorNumber("DetectorNumber","MUST2Telescope", 0)             						;
+		G4VPrimitiveScorer* Energy 														= new GENERALSCORERS::PSEnergy("StripEnergy","MUST2Telescope", 0)             											;			
+		G4VPrimitiveScorer* TOF 															= new GENERALSCORERS::PSTOF("StripTime","MUST2Telescope", 0)                  											;          					 		 
+		
+		G4VPrimitiveScorer* StripPositionX										= new PSStripNumberX("StripNumberX", 0, SiliconFace, 128)  																					;
+		G4VPrimitiveScorer* StripPositionY										= new PSStripNumberY("StripNumberY", 0, SiliconFace, 128)   																				;  		
+
+		G4VPrimitiveScorer* InteractionCoordinatesX 					= new GENERALSCORERS::PSInteractionCoordinatesX("InterCoordX","MUST2Telescope", 0) 									;
+		G4VPrimitiveScorer* InteractionCoordinatesY						= new GENERALSCORERS::PSInteractionCoordinatesY("InterCoordY","MUST2Telescope", 0) 									;
+		G4VPrimitiveScorer* InteractionCoordinatesZ  					= new GENERALSCORERS::PSInteractionCoordinatesZ("InterCoordZ","MUST2Telescope", 0) 									;	 		 
+		G4VPrimitiveScorer* InteractionCoordinatesAngleTheta	= new GENERALSCORERS::PSInteractionCoordinatesAngleTheta("InterCoordAngTheta","MUST2Telescope", 0) 	;
+		G4VPrimitiveScorer* InteractionCoordinatesAnglePhi    = new GENERALSCORERS::PSInteractionCoordinatesAnglePhi("InterCoordAngPhi","MUST2Telescope", 0) 			;	    
 		
-		G4VPrimitiveScorer* DetNbr 								= new MUST2::PSDetectorNumber("DetectorNumber", 0, "Silicon")             	;
-		G4VPrimitiveScorer* Energy 								= new PSStripE("StripEnergy", 0)             						;
-		G4VPrimitiveScorer* TOF 								= new PSTOF("StripTime", 0)                  						;          					 
-		G4VPrimitiveScorer* StripPositionX						= new PSStripNumberX("StripNumberX", 0, SiliconFace, 128)  			;
-		G4VPrimitiveScorer* StripPositionY						= new PSStripNumberY("StripNumberY", 0, SiliconFace, 128)   		;  				 
-		G4VPrimitiveScorer* InteractionCoordinatesX 			= new PSInteractionCoordinatesX("InterCoordX", 0) 					;
-		G4VPrimitiveScorer* InteractionCoordinatesY				= new PSInteractionCoordinatesY("InterCoordY", 0) 					;
-		G4VPrimitiveScorer* InteractionCoordinatesZ  			= new PSInteractionCoordinatesZ("InterCoordZ", 0) 					;	 		 
-		G4VPrimitiveScorer* InteractionCoordinatesAngleTheta	= new PSInteractionCoordinatesAngleTheta("InterCoordAngTheta", 0) 	;
-		G4VPrimitiveScorer* InteractionCoordinatesAnglePhi    	= new PSInteractionCoordinatesAnglePhi("InterCoordAngPhi", 0) 		;	    
-	  	
 	  	
 		//and register it to the multifunctionnal detector
 		m_StripScorer->RegisterPrimitive(DetNbr)             				;
@@ -1246,14 +1317,18 @@ void MUST2Array::InitializeScorers()
 		m_StripScorer->RegisterPrimitive(InteractionCoordinatesAnglePhi) 	;
 	  	
 	  	//	SiLi Associate Scorer
-	  	m_SiLiScorer	= new G4MultiFunctionalDetector("SiLiScorer")			;
-	    G4VPrimitiveScorer* SiLiEnergy 			= new PSStripE("SiLiEnergy", 0) ;
-		m_SiLiScorer->RegisterPrimitive(SiLiEnergy) 							;
+	  	m_SiLiScorer	= new G4MultiFunctionalDetector("MUST2_SiLiScorer")			;
+	    G4VPrimitiveScorer* SiLiEnergy 			= new GENERALSCORERS::PSEnergy("SiLiEnergy","MUST2Telescope", 0) ;
+	    G4VPrimitiveScorer* SiLiPadNbr 			= new PSPadOrCristalNumber("SiLiPadNbr",0) ;
+			m_SiLiScorer->RegisterPrimitive(SiLiEnergy) 							;
+			m_SiLiScorer->RegisterPrimitive(SiLiPadNbr) 							;
 	   
 	    //	CsI Associate Scorer 
-	    m_CsIScorer	= new G4MultiFunctionalDetector("CsIScorer")				;
-	    G4VPrimitiveScorer* CsIEnergy 			= new PSStripE("CsIEnergy", 0) 	;
+	    m_CsIScorer	= new G4MultiFunctionalDetector("MUST2_CsIScorer")				;
+	    G4VPrimitiveScorer* CsIEnergy 			= new GENERALSCORERS::PSEnergy("CsIEnergy","MUST2Telescope", 0) 	;
+	    G4VPrimitiveScorer* CsICristalNbr 	= new PSPadOrCristalNumber("CsICristalNbr",0) ;
 	    m_CsIScorer->RegisterPrimitive(CsIEnergy)								;
+	    m_CsIScorer->RegisterPrimitive(CsICristalNbr)						;
 	    
 	    //	Add All Scorer to the Global Scorer Manager
 	    G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
diff --git a/NPSimulation/src/Must2Scorers.cc b/NPSimulation/src/Must2Scorers.cc
index 685781f4d40152b13c6470a36c4ac7ba11500f0c..2b057adf11486a6508e9239bc808b555e870b688 100644
--- a/NPSimulation/src/Must2Scorers.cc
+++ b/NPSimulation/src/Must2Scorers.cc
@@ -24,78 +24,10 @@
  *****************************************************************************/
 #include "Must2Scorers.hh"
 #include "G4UnitsTable.hh"
+#include "GeneralScorers.hh"
 #include <string>
 using namespace MUST2 ;
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Added by Adrien MATTA:
-// Those Scorer use TrackID as map index. This way ones can rebuild energy deposit,
-// time of flight or position,... particle by particle for each event. Because standard
-// scorer provide by G4 don't work this way but using a global ID for each event you should
-// not use those scorer with some G4 provided ones or being very carefull doing so.
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//Strip Energy Scorer (deal with multiple particle hit)
-
-PSStripE::PSStripE(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-   ;
-}
-
-PSStripE::~PSStripE()
-{
-   ;
-}
-
-G4bool PSStripE::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->add(index, edep);
-   return TRUE;
-}
-
-void PSStripE::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void PSStripE::EndOfEvent(G4HCofThisEvent*)
-{
-   ;
-}
-
-void PSStripE::clear()
-{
-   EvtMap->clear();
-}
-
-void PSStripE::DrawAll()
-{
-   ;
-}
-
-void PSStripE::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
-
-
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //Strip position Scorer
@@ -103,8 +35,9 @@ void PSStripE::PrintAll()
 PSStripNumberX::PSStripNumberX(G4String name, G4int depth, G4double StripPlaneSize, G4int NumberOfStrip)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
 {
-   m_StripPlaneSize =   StripPlaneSize ;
-   m_NumberOfStrip    = NumberOfStrip  ;
+   m_StripPlaneSize = StripPlaneSize ;
+   m_NumberOfStrip  = NumberOfStrip  ;
+	 m_StripPitch			= m_StripPlaneSize / m_NumberOfStrip;
 }
 
 PSStripNumberX::~PSStripNumberX()
@@ -114,25 +47,25 @@ PSStripNumberX::~PSStripNumberX()
 
 G4bool PSStripNumberX::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	 int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "MUST2Telescope");
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
-   G4double StripPitch = m_StripPlaneSize / m_NumberOfStrip;
-
-   G4double temp = (POS(0) + m_StripPlaneSize / 2.) / StripPitch   ;
-   G4double X = int(temp) + 1 ;
+   G4double temp = (POS(0) + m_StripPlaneSize / 2.) / m_StripPitch   ;
+   G4int X = int(temp) + 1 ;
    //Rare case where particle is close to edge of silicon plan
-   if (X == 129) X = 128;
+   if (X == m_NumberOfStrip+1) X = m_NumberOfStrip;
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, X);
+   EvtMap->set(index+DetNbr, X);
    return TRUE;
 }
 
 void PSStripNumberX::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -169,6 +102,7 @@ PSStripNumberY::PSStripNumberY(G4String name, G4int depth, G4double StripPlaneSi
 {
    m_StripPlaneSize =   StripPlaneSize ;
    m_NumberOfStrip    = NumberOfStrip  ;
+	 m_StripPitch			= m_StripPlaneSize / m_NumberOfStrip;
 }
 
 PSStripNumberY::~PSStripNumberY()
@@ -178,27 +112,28 @@ PSStripNumberY::~PSStripNumberY()
 
 G4bool PSStripNumberY::ProcessHits(G4Step* aStep, G4TouchableHistory*)
 {
+	 int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "MUST2Telescope");
+
+
    G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
    POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
 
-   G4double StripPitch = m_StripPlaneSize / m_NumberOfStrip;
-
-   G4double temp = (POS(1) + m_StripPlaneSize / 2.) / StripPitch   ;
+   G4double temp = (POS(1) + m_StripPlaneSize / 2.) / m_StripPitch   ;
    G4int temp2 = temp ;
-   G4double Y = temp2 + 1                    ;
+   G4int Y = temp2 + 1                    ;
    //Rare case where particle is close to edge of silicon plan
-   if (Y == 129) Y = 128;
+   if (Y == m_NumberOfStrip+1) Y = m_NumberOfStrip;
 
    G4double edep = aStep->GetTotalEnergyDeposit();
    if (edep < 100*keV) return FALSE;
    G4int  index =  aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, Y);
+   EvtMap->set(index+DetNbr, Y);
    return TRUE;
 }
 
 void PSStripNumberY::Initialize(G4HCofThisEvent* HCE)
 {
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
       HCID = GetCollectionID(0);
    }
@@ -227,42 +162,51 @@ void PSStripNumberY::PrintAll()
    G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
 }
 
+
+
+
+
+
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-		//Detector Number Scorer
-PSDetectorNumber::PSDetectorNumber(G4String name, G4int depth, G4String VolumeName )
+//CsI Cristal / SiLi Pad Number Scorer
+//
+PSPadOrCristalNumber::PSPadOrCristalNumber(G4String name, G4int depth)
       : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-   m_VolumeName = VolumeName;
-}
+{}
 
-PSDetectorNumber::~PSDetectorNumber()
-{
-   ;
-}
+PSPadOrCristalNumber::~PSPadOrCristalNumber()
+{}
 
-G4bool PSDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr ;
-   size_t found;
-   found=name.find(m_VolumeName);
-   
-   int numberOfCharacterInTelescopeNumber = (int)found - 1 ;
-   
-
-	for( int i = 0 ; i < numberOfCharacterInTelescopeNumber ; i++ )
-		nbr += name[i+1] ;
-
-   G4int DetNbr = atof( nbr.c_str() ) ;
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(index, DetNbr);
-   return TRUE;
+G4bool PSPadOrCristalNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{   
+		std::string name = aStep->GetTrack()->GetVolume()->GetName();
+		std::string nbr ;
+
+		G4int temp1,temp2 ;
+		G4int VolumeNumber;
+		nbr = name[name.length()-1]	;
+		temp1 = atoi( nbr.c_str() )	;
+		
+		nbr = name[name.length()-2]	;
+		temp2 = atoi( nbr.c_str() )	;
+		
+		nbr.clear();
+		
+		if(temp2!=0) { nbr+= name[name.length()-2]	; nbr+= name[name.length()-1]	; VolumeNumber = atoi( nbr.c_str() )	;}
+		
+		else 				 { nbr= name[name.length()-1]	; VolumeNumber = atoi( nbr.c_str() )	;}
+
+	 	G4int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "MUST2Telescope");
+
+		G4double edep = aStep->GetTotalEnergyDeposit();
+		if (edep < 100*keV) return FALSE;
+		G4int  index =  aStep->GetTrack()->GetTrackID();
+		EvtMap->set(index+DetNbr, VolumeNumber);
+		return TRUE;
 }
 
-void PSDetectorNumber::Initialize(G4HCofThisEvent* HCE)
+void PSPadOrCristalNumber::Initialize(G4HCofThisEvent* HCE)
 {
    EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
    if (HCID < 0) {
@@ -271,30 +215,39 @@ void PSDetectorNumber::Initialize(G4HCofThisEvent* HCE)
    HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
 }
 
-void PSDetectorNumber::EndOfEvent(G4HCofThisEvent*)
+void PSPadOrCristalNumber::EndOfEvent(G4HCofThisEvent*)
 {
    ;
 }
 
-void PSDetectorNumber::clear()
+void PSPadOrCristalNumber::clear()
 {
    EvtMap->clear();
 }
 
-void PSDetectorNumber::DrawAll()
+void PSPadOrCristalNumber::DrawAll()
 {
    ;
 }
 
-void PSDetectorNumber::PrintAll()
+void PSPadOrCristalNumber::PrintAll()
 {
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
 }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/NPSimulation/src/PhysicsList.cc b/NPSimulation/src/PhysicsList.cc
index b2830204201608cb20133a7d78c9670cb21749be..104f0673950be17dba416e4ab23c08eb5a4eef35 100644
--- a/NPSimulation/src/PhysicsList.cc
+++ b/NPSimulation/src/PhysicsList.cc
@@ -70,8 +70,9 @@
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 PhysicsList::PhysicsList()
-{
-   defaultCutValue = 1 * cm;
+{	
+	  // ie: no secondaries
+   defaultCutValue = 1000 * pc;
 }
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 PhysicsList::~PhysicsList()
@@ -211,7 +212,7 @@ void PhysicsList::ConstructEM()
          pmanager->AddProcess(new G4MultipleScattering(), -1, 1, 1)        ;
          G4ionIonisation* iI = new G4ionIonisation                   ;
          // mod by Nicolas [07/05/09]
-//          iI->ActivateNuclearStopping(true)                        ;
+          iI->ActivateNuclearStopping(true)                        ;
          iI->ActivateStoppingData(true)                           ;
          pmanager->AddProcess(iI            , -1, 2, 2)          ;
 
@@ -232,9 +233,9 @@ void PhysicsList::ConstructEM()
    G4EmProcessOptions opt        ;
    opt.SetSubCutoff(true)        ;
    opt.SetMinEnergy(0.001*eV)    ;
-   opt.SetMaxEnergy(600.*MeV)    ;
-   opt.SetDEDXBinning(600)       ;
-   opt.SetLambdaBinning(600)     ;
+   opt.SetMaxEnergy(1000.*MeV)    ;
+   opt.SetDEDXBinning(1000)       ;
+   opt.SetLambdaBinning(1000)     ;
    // mod by Nicolas [07/05/09]
 // opt.SetLinearLossLimit(1.e-3) ;
 
diff --git a/NPSimulation/src/Plastic.cc b/NPSimulation/src/Plastic.cc
index 1f95f4954904a6055597a8824e5b59dead0cba56..5e1e3fda47083a810e4cbdd617b9808a6d135c24 100644
--- a/NPSimulation/src/Plastic.cc
+++ b/NPSimulation/src/Plastic.cc
@@ -8,11 +8,13 @@
 /*****************************************************************************
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
- * Creation Date  : January 2009                                             *
+ * Creation Date  : September 2009                                           *
  * Last update    :                                                          *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
- *  This class describe a 20um Silicium detector                             *
+ *  This class describe a Modular cylindrical Plastic Scintillator           *
+ *	Few Material are instantiate and user can choose position and dimension	 * 
+ *  but also the adding of a lead plate on the rear side of the detector     *
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
@@ -22,7 +24,7 @@
 // C++ headers
 #include <sstream>
 #include <cmath>
-
+#include <limits>
 //G4 Geometry object
 #include "G4Tubs.hh"
 
@@ -41,9 +43,9 @@
 
 // NPTool header
 #include "Plastic.hh"
-#include "PlasticScorers.hh"
+#include "GeneralScorers.hh"
 #include "RootOutput.h"
-
+using namespace GENERALSCORERS ;
 // CLHEP header
 #include "CLHEP/Random/RandGauss.h"
 
@@ -56,7 +58,7 @@ namespace PLASTIC
 {
    // Energy and time Resolution
    const G4double ResoTime    = 4.2      	;// = 10ns of Resolution   //   Unit is MeV/2.35
-   const G4double ResoEnergy  = 0.42   		;// = 1MeV of Resolution   //   Unit is MeV/2.35
+   const G4double ResoEnergy  = 5.0   		;// Resolution in %
 
 }
 
@@ -73,25 +75,31 @@ Plastic::Plastic()
 
 Plastic::~Plastic()
 {
-	delete m_MaterialPlastic	; 
-	delete m_MaterialLead		;
-	delete m_PlasticScorer		;
+	delete m_MaterialPlastic_BC400		; 
+	delete m_MaterialPlastic_BC452_2	;
+	delete m_MaterialPlastic_BC452_5	;
+	delete m_MaterialPlastic_BC452_10	;
+	delete m_MaterialLead							;
+	delete m_PlasticScorer						;
 }
+
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-void Plastic::AddPlastic(	G4double    R        			,
-        					G4double    Theta    			,
-         			 		G4double    Phi         		,
-         			 		G4double	 PlasticThickness	,
-         			 		G4double	 PlasticRadius		,
-         			 		G4double 	LeadThickness		)
+void Plastic::AddPlastic(	G4double  R        					,
+				        					G4double  Theta    					,
+				         			 		G4double  Phi         			,
+				         			 		G4double	PlasticThickness	,
+				         			 		G4double	PlasticRadius			,
+				         			 		G4String 	Scintillator			,
+				         			 		G4double 	LeadThickness			)
 {
 
-   m_R.push_back(R)              		;
-   m_Theta.push_back(Theta)         	;
-   m_Phi.push_back(Phi)          		;
-   m_PlasticThickness.push_back(PlasticThickness)					;
- 	m_PlasticRadius.push_back(PlasticRadius)						;
- 	m_LeadThickness.push_back(LeadThickness);
+  m_R.push_back(R)              									;
+  m_Theta.push_back(Theta)        								;
+  m_Phi.push_back(Phi)          									;
+  m_PlasticThickness.push_back(PlasticThickness)	;
+ 	m_PlasticRadius.push_back(PlasticRadius)				;
+ 	m_LeadThickness.push_back(LeadThickness)				;
+ 	m_Scintillator.push_back(Scintillator)					;
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
@@ -104,12 +112,13 @@ void Plastic::AddPlastic(	G4double    R        			,
 // Called in DetecorConstruction::ReadDetextorConfiguration Method
 void Plastic::ReadConfiguration(string Path)
 {
-   ifstream ConfigFile           ;
-   ConfigFile.open(Path.c_str()) ;
-   string LineBuffer          ;
-   string DataBuffer          ;
+	ifstream ConfigFile           ;
+	ConfigFile.open(Path.c_str()) ;
+	string LineBuffer          ;
+	string DataBuffer          ;
 
-   G4double Theta = 0 , Phi = 0 , R = 0 , Thickness = 0 , Radius = 0 , LeadThickness = 0;
+	G4double Theta = 0 , Phi = 0 , R = 0 , Thickness = 0 , Radius = 0 , LeadThickness = 0;
+	G4String Scintillator ;
 
 	bool check_Theta = false   ;
 	bool check_Phi  = false  ;
@@ -117,6 +126,7 @@ void Plastic::ReadConfiguration(string Path)
 	bool check_Thickness = false  		;
 	bool check_Radius = false  			;
 	bool check_LeadThickness = false		;
+	bool check_Scintillator = false		;
 	bool ReadingStatus = false ;
 	
 
@@ -125,7 +135,7 @@ void Plastic::ReadConfiguration(string Path)
       
 	      	getline(ConfigFile, LineBuffer);
 
-			//	If line is a Start Up MUST2 bloc, Reading toggle to true      
+			//	If line is a Start Up Plastic bloc, Reading toggle to true      
 	      	if (LineBuffer.compare(0, 7, "Plastic") == 0) 
 		      	{
 		        	 G4cout << "///" << G4endl           ;
@@ -144,7 +154,7 @@ void Plastic::ReadConfiguration(string Path)
 					ConfigFile >> DataBuffer ;
 
 					//	Comment Line 
-					if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;}
+					if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
 
 						//	Finding another telescope (safety), toggle out
 					else if (DataBuffer.compare(0, 6, "Plastic") == 0) {
@@ -193,6 +203,13 @@ void Plastic::ReadConfiguration(string Path)
 						cout << "Plastic Thickness:  " << Thickness/mm << endl;
 					}
 					
+					else if (DataBuffer.compare(0, 13, "Scintillator=") == 0) {
+						check_Scintillator = true ;
+						ConfigFile >> DataBuffer ;
+						Scintillator = DataBuffer ;
+						cout << "Plastic Scintillator type:  " << Scintillator << endl;
+					}
+					
 					else if (DataBuffer.compare(0, 14, "LeadThickness=") == 0) {
 						check_LeadThickness = true;
 						ConfigFile >> DataBuffer ;
@@ -209,14 +226,15 @@ void Plastic::ReadConfiguration(string Path)
 			         	/////////////////////////////////////////////////
 			         	//	If All necessary information there, toggle out
 			         
-			         if ( check_Theta && check_Phi && check_R && check_Thickness && check_Radius && check_LeadThickness) 
+			         if ( check_Theta && check_Phi && check_R && check_Thickness && check_Radius && check_LeadThickness && check_Scintillator) 
 			         	{ 
-		         		  AddPlastic(	R       	,
-		                  				Theta    	,
-		                  				Phi   		,
-		                  				Thickness	,
-		                  				Radius		,
-		                  				LeadThickness);
+		         		  AddPlastic(	R       		,
+		                  				Theta    		,
+		                  				Phi   			,
+		                  				Thickness		,
+		                  				Radius			,
+		                  				Scintillator	,
+		                  				LeadThickness	);
 					         
 					        //	Reinitialisation of Check Boolean 
 					        
@@ -226,6 +244,7 @@ void Plastic::ReadConfiguration(string Path)
 							check_Thickness = false  		;
 							check_Radius = false  			;
 							check_LeadThickness = false		;
+							check_Scintillator = false 		;
 							ReadingStatus = false 			;	
 							cout << "///"<< endl ;	         
 			         	}
@@ -241,14 +260,14 @@ void Plastic::ConstructDetector(G4LogicalVolume* world)
 {
    	G4ThreeVector Det_pos = G4ThreeVector(0, 0, 0)  ;
 	
-   for (ushort i = 0 ; i < m_R.size() ; i++) 
+   for (unsigned short i = 0 ; i < m_R.size() ; i++) 
    	{
          G4double wX = m_R[i] * sin(m_Theta[i] ) * cos(m_Phi[i] )   ;
          G4double wY = m_R[i] * sin(m_Theta[i] ) * sin(m_Phi[i] )   ;
          G4double wZ = m_R[i] * cos(m_Theta[i] )             		;
 
          Det_pos = G4ThreeVector(wX, wY, wZ)                 ;
-         G4LogicalVolume* logicPlastic = NULL ;
+//         G4LogicalVolume* logicPlastic = NULL ;
 			
 		VolumeMaker(Det_pos , i+1, world) ;
     }
@@ -269,6 +288,20 @@ void Plastic::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume*
 		
 		int i = DetNumber-1;
 
+		G4Material* PlasticMaterial ;
+		
+			 if(m_Scintillator[i] == "BC400"    ) PlasticMaterial = m_MaterialPlastic_BC400 	;
+		else if(m_Scintillator[i] == "BC452_2"  ) PlasticMaterial = m_MaterialPlastic_BC452_2 	;
+		else if(m_Scintillator[i] == "BC452_5"  ) PlasticMaterial = m_MaterialPlastic_BC452_5	;
+		else if(m_Scintillator[i] == "BC452_10" ) PlasticMaterial = m_MaterialPlastic_BC452_10	;
+		else {	
+				G4cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl ;
+				G4cout << "WARNING: Material Not found, default material set : BC400" << endl ; 
+				G4cout << "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" << endl ;
+				PlasticMaterial = m_MaterialPlastic_BC400;
+			}
+		
+		
 		// Definition of the volume containing the sensitive detector
 		if(m_PlasticThickness[i]>0 && m_PlasticRadius[i]>0)
 			{ 
@@ -279,7 +312,7 @@ void Plastic::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume*
 			                            			0*deg					, 
 			                            			360*deg					);
 		                            		
-				G4LogicalVolume* logicPlastic = new G4LogicalVolume(solidPlastic, m_MaterialPlastic, Name, 0, 0, 0);
+				G4LogicalVolume* logicPlastic = new G4LogicalVolume(solidPlastic, PlasticMaterial, Name+ "_Scintillator", 0, 0, 0);
 				logicPlastic->SetSensitiveDetector(m_PlasticScorer);
 				
 				G4VisAttributes* PlastVisAtt = new G4VisAttributes(G4Colour(0.0, 0.0, 0.9)) ;
@@ -290,7 +323,7 @@ void Plastic::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume*
 				PVPBuffer = new G4PVPlacement(	0				,
 												Det_pos			,
 		                                     	logicPlastic    ,
-		                                     	Name            ,
+		                                     	Name  + "_Scintillator"          ,
 		                                     	world           ,
 		                                     	false           ,
 		                                     	0				);	
@@ -302,21 +335,21 @@ void Plastic::VolumeMaker(G4ThreeVector Det_pos, int DetNumber, G4LogicalVolume*
                                      	
         if(m_LeadThickness[i]>0&& m_PlasticRadius[i]>0)
         	{
-    			G4Tubs* solidLead = new G4Tubs(	Name					,	 
+    			G4Tubs* solidLead = new G4Tubs(	Name+"_Lead"  			,	 
 		                            			0						,
 		                            			m_PlasticRadius[i]		,
 		                            			m_LeadThickness[i]/2	,
 		                            			0*deg					, 
 		                            			360*deg					);
 		                            		
-				G4LogicalVolume* logicLead = new G4LogicalVolume(solidLead, m_MaterialLead, Name, 0, 0, 0);
+				G4LogicalVolume* logicLead = new G4LogicalVolume(solidLead, m_MaterialLead, Name+"_Lead", 0, 0, 0);
 				G4VisAttributes* LeadVisAtt = new G4VisAttributes(G4Colour(0.1, 0.1, 0.1)) ;
    				logicLead->SetVisAttributes(LeadVisAtt) ;
    				
 				PVPBuffer = new G4PVPlacement(	0																		,
 												Det_pos+(m_PlasticThickness[i]/2+m_LeadThickness[i]/2)*Det_pos.unit()	,
 		                                     	logicLead    															,
-		                                     	Name            														,	
+		                                     	Name+"_Lead"        														,	
 		                                     	world           														,
 		                                     	false           														,
 		                                     	0																		);
@@ -393,7 +426,7 @@ void Plastic::ReadSensitive(const G4Event* event)
 	            G4double E     = *(Energy_itr->second)      	;
 
 	            if (ETrackID == NTrackID) {
-	                m_Event->SetEnergy(RandGauss::shoot(E, ResoEnergy))    ;
+	                m_Event->SetEnergy(RandGauss::shoot(E, E*ResoEnergy/100./2.35))    ;
 	            }
 	            
 	            Energy_itr++;
@@ -419,8 +452,10 @@ void Plastic::ReadSensitive(const G4Event* event)
     }
     
     // clear map for next event
-    DetectorNumberHitMap    ->clear();
-    EnergyHitMap   			->clear() ;     
+    TimeHitMap				->clear()	;    
+    DetectorNumberHitMap    ->clear()	;
+    EnergyHitMap   			->clear() 	; 
+   
 }
 
 ////////////////////////////////////////////////////////////////
@@ -430,14 +465,14 @@ void Plastic::InitializeMaterial()
 		////////////////////////////////////////////////////////////////
 		/////////////////Element  Definition ///////////////////////////
 		////////////////////////////////////////////////////////////////
-		   G4String symbol               			;
-		   G4double density = 0. , a = 0, z = 0   	;
-		   G4int ncomponents = 0, natoms = 0		;
+		   G4String symbol               						;
+		   G4double density = 0. , a = 0, z = 0   				;
+		   G4int ncomponents = 0, natoms = 0, fractionmass = 0	;
 
 			// for Plastic
-		   G4Element* H   = new G4Element("Hydrogen" , symbol = "H"  , z = 1  , a = 1.01   * g / mole);
-		   G4Element* C   = new G4Element("Carbon"   , symbol = "C"  , z = 6  , a = 12.011 * g / mole);
-			
+		   	G4Element* H   = new G4Element("Hydrogen" 	, symbol = "H"  	, z = 1  , a = 1.01   * g / mole);
+		   	G4Element* C   = new G4Element("Carbon"   	, symbol = "C"  	, z = 6  , a = 12.011 * g / mole);
+		 	G4Element* Pb  = new G4Element("Lead"   	, symbol = "Pb"  	, z = 82 , a = 207.2  * g / mole);
 		////////////////////////////////////////////////////////////////
 		/////////////////Material Definition ///////////////////////////
 		////////////////////////////////////////////////////////////////
@@ -448,11 +483,32 @@ void Plastic::InitializeMaterial()
 		   m_MaterialLead = new G4Material("Lead", z = 82 , a, density);
 
 
-		   // Plastic
-		   density = 1.243 * g / cm3;
-		   m_MaterialPlastic = new G4Material("Plastic", density, ncomponents = 2);
-		   m_MaterialPlastic->AddElement(H , natoms = 10);
-		   m_MaterialPlastic->AddElement(C  , natoms = 14);
+		   // Plastic BC-400
+		   density = 1.032 * g / cm3;
+		   m_MaterialPlastic_BC400 = new G4Material("Plastic_BC400", density, ncomponents = 2);
+		   m_MaterialPlastic_BC400->AddElement(H , natoms = 10);
+		   m_MaterialPlastic_BC400->AddElement(C  , natoms = 9);
+		   
+		   // Plastic BC-452 Pb 2%
+		   density = 1.05 * g / cm3;
+		   m_MaterialPlastic_BC452_2 = new G4Material("Plastic_BC452_2", density, ncomponents = 3);
+		   m_MaterialPlastic_BC452_2->AddElement(H  , natoms = 10);
+		   m_MaterialPlastic_BC452_2->AddElement(C  , natoms = 9);
+		   m_MaterialPlastic_BC452_2->AddElement(Pb , fractionmass=2*perCent);
+
+		   // Plastic BC-452 Pb 5%
+		   density = 1.08 * g / cm3;
+		   m_MaterialPlastic_BC452_5 = new G4Material("Plastic_BC452_5", density, ncomponents = 3);
+		   m_MaterialPlastic_BC452_5->AddElement(H  , natoms = 10);
+		   m_MaterialPlastic_BC452_5->AddElement(C  , natoms = 9);
+		   m_MaterialPlastic_BC452_5->AddElement(Pb , fractionmass=5*perCent);
+
+		   // Plastic BC-452 Pb 10%
+		   density = 1.17 * g / cm3;
+		   m_MaterialPlastic_BC452_10 = new G4Material("Plastic_BC452_10", density, ncomponents = 3);
+		   m_MaterialPlastic_BC452_10->AddElement(H  , natoms = 10);
+		   m_MaterialPlastic_BC452_10->AddElement(C  , natoms = 9);
+		   m_MaterialPlastic_BC452_10->AddElement(Pb , fractionmass=10*perCent);		   
 	
 	}
 
@@ -462,14 +518,14 @@ void Plastic::InitializeScorers()
 		m_PlasticScorer = new G4MultiFunctionalDetector("PlasticScorer") ;
 		G4SDManager::GetSDMpointer()->AddNewDetector(m_PlasticScorer);
 		
-		G4VPrimitiveScorer* DetNbr = new PSDetectorNumber("PlasticNumber", 0)  ;
-		G4VPrimitiveScorer* Energy = new PSEnergy("Energy", 0)             					;
-		G4VPrimitiveScorer* Time = new PSTOF("Time", 0)             					;
+		G4VPrimitiveScorer* DetNbr = new PSDetectorNumber("PlasticNumber","Plastic", 0) ;
+		G4VPrimitiveScorer* Energy = new PSEnergy("Energy","Plastic", 0)             		;
+		G4VPrimitiveScorer* Time   = new PSTOF("Time","Plastic", 0)             				;
 		 
 		//and register it to the multifunctionnal detector
 		m_PlasticScorer->RegisterPrimitive(DetNbr)             				;
 		m_PlasticScorer->RegisterPrimitive(Energy)             				;
-		m_PlasticScorer->RegisterPrimitive(Time)             				;		
+		m_PlasticScorer->RegisterPrimitive(Time)             					;		
 		
 		
 	}
diff --git a/NPSimulation/src/PlasticScorer.cc b/NPSimulation/src/PlasticScorer.cc
deleted file mode 100644
index 4cf0904c27753c54b33660127cab23fffdd5f5ec..0000000000000000000000000000000000000000
--- a/NPSimulation/src/PlasticScorer.cc
+++ /dev/null
@@ -1,240 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2009   this file is part of the NPTool Project              *
- *                                                                           *
- * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
- * For the list of contributors see $NPTOOL/Licence/Contributors             *
- *****************************************************************************/
-
-/*****************************************************************************
- * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
- *                                                                           *
- * Creation Date  : September 2009                                           *
- * Last update    :                                                          *
- *---------------------------------------------------------------------------*
- * Decription:                                                               *
- *  This class old some of the Platic Scorer, shared by different detector.  *
- *---------------------------------------------------------------------------*
- * Comment:                                                                  *
- *****************************************************************************/
-#include "PlasticScorers.hh"
-#include "G4UnitsTable.hh"
-using namespace PLASTIC;
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-// Energy Scorer (deal with multiple particle hit)
-
-PSEnergy::PSEnergy(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-}
-
-PSEnergy::~PSEnergy()
-{
-}
-
-G4bool PSEnergy::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr ;
-   size_t found;
-   found=name.find("Plastic");
-   found = found + 7;
-   
-   int numberOfCharacterInDetectorNumber = name.length() - (int)found  ;
-
-	for( int i = found ; i < found + numberOfCharacterInDetectorNumber ; i++ )
-			nbr += name[i] ; 
-		
-   G4int DetNbr = atoi( nbr.c_str() ) ;
-
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   
-   EvtMap->add(DetNbr+index, edep);
-   return TRUE;
-}
-
-void PSEnergy::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void PSEnergy::EndOfEvent(G4HCofThisEvent*)
-{
-   ;
-}
-
-void PSEnergy::clear()
-{
-   EvtMap->clear();
-}
-
-void PSEnergy::DrawAll()
-{
-   ;
-}
-
-void PSEnergy::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4double*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-		//Detector Number Scorer
-PSDetectorNumber::PSDetectorNumber(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-}
-
-PSDetectorNumber::~PSDetectorNumber()
-{
-   ;
-}
-
-G4bool PSDetectorNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr ;
-   size_t found;
-   found=name.find("Plastic");
-   found = found + 7;
-   
-   int numberOfCharacterInDetectorNumber = name.length() - (int)found  ;
-
-	for( int i = found ; i < found + numberOfCharacterInDetectorNumber ; i++ )
-			nbr += name[i] ; 
-		
-   G4int DetNbr = atoi( nbr.c_str() ) ;
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   
-   if (edep < 100*keV) return FALSE;
-   
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   
-   EvtMap->set(DetNbr + index, DetNbr);
-   return TRUE;
-}
-
-void PSDetectorNumber::Initialize(G4HCofThisEvent* HCE)
-{ 
-   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void PSDetectorNumber::EndOfEvent(G4HCofThisEvent*)
-{
-   ;
-}
-
-void PSDetectorNumber::clear()
-{
-   EvtMap->clear();
-}
-
-void PSDetectorNumber::DrawAll()
-{
-   ;
-}
-
-void PSDetectorNumber::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl;
-   std::map<G4int, G4int*>::iterator itr = EvtMap->GetMap()->begin();
-   for (; itr != EvtMap->GetMap()->end(); itr++) {
-      G4cout << "  copy no.: " << itr->first
-      << "  energy deposit: " << G4BestUnit(*(itr->second), "Energy")
-      << G4endl;
-   }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//TOF Scorer//
-PSTOF::PSTOF(G4String name, G4int depth)
-      : G4VPrimitiveScorer(name, depth), HCID(-1)
-{
-   ;
-}
-
-PSTOF::~PSTOF()
-{
-   ;
-}
-
-G4bool PSTOF::ProcessHits(G4Step* aStep, G4TouchableHistory*)
-{
-   std::string name = aStep->GetTrack()->GetVolume()->GetName();
-   std::string nbr ;
-   size_t found;
-   found=name.find("Plastic");
-   found = found + 7;
-   
-   int numberOfCharacterInDetectorNumber = name.length() - (int)found  ;
-
-	for( int i = found ; i < found + numberOfCharacterInDetectorNumber ; i++ )
-			nbr += name[i] ; 
-		
-   G4int DetNbr = atoi( nbr.c_str() ) ;
-
-
-   G4double TOF  = aStep->GetPreStepPoint()->GetGlobalTime();
-   G4double edep = aStep->GetTotalEnergyDeposit();
-   if (edep < 100*keV) return FALSE;
-   G4int  index = aStep->GetTrack()->GetTrackID();
-   EvtMap->set(DetNbr + index, TOF);
-   return TRUE;
-}
-
-void PSTOF::Initialize(G4HCofThisEvent* HCE)
-{
-   EvtMap = new G4THitsMap<G4double>(GetMultiFunctionalDetector()->GetName(),
-         GetName());
-   if (HCID < 0) {
-      HCID = GetCollectionID(0);
-   }
-   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
-}
-
-void PSTOF::EndOfEvent(G4HCofThisEvent*)
-{
-   ;
-}
-
-void PSTOF::clear()
-{
-   EvtMap->clear();
-}
-
-void PSTOF::DrawAll()
-{
-   ;
-}
-
-void PSTOF::PrintAll()
-{
-   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
-   G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
-   G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
-}
diff --git a/NPSimulation/src/PrimaryGeneratorAction.cc b/NPSimulation/src/PrimaryGeneratorAction.cc
index d581258dcb9857d1b4770f41da282db5ac6c5375..a5d8a264e2eb54c33cb78404ac210f7ee0ab6ba4 100644
--- a/NPSimulation/src/PrimaryGeneratorAction.cc
+++ b/NPSimulation/src/PrimaryGeneratorAction.cc
@@ -123,29 +123,21 @@ void PrimaryGeneratorAction::ReadEventGeneratorFile(string Path)
          myEventGenerator->ReadConfiguration(Path)                      ;
          EventGeneratorFile.open(Path.c_str())                          ;
          myEventGenerator->InitializeRootOutput()           ;
-         myEventGenerator->SetTargetThickness(m_detector->GetTargetThickness())  ;
-         myEventGenerator->SetTargetRadius(m_detector->GetTargetRadius())     ;
-         myEventGenerator->SetTargetCoordinate(m_detector->GetTargetX() ,
-               m_detector->GetTargetY()   ,
-               m_detector->GetTargetZ())  ;
+         myEventGenerator->SetTarget(m_detector->GetTarget())  ;
          m_EventGenerator = myEventGenerator                            ;
       }
 
 
-      //Search for Transfert To Resonance
+      //Search for Transfert
       else if (LineBuffer.compare(0, 9, "Transfert") == 0 && !check_Transfert && LineBuffer.compare(0, 11, "TransfertTo") != 0) {
-         check_Transfert = true                                      ;
-         VEventGenerator* myEventGenerator = new EventGeneratorTransfert()                  ;
-         EventGeneratorFile.close()                                  ;
-         myEventGenerator->ReadConfiguration(Path)                      ;
-         EventGeneratorFile.open(Path.c_str())                          ;
-         myEventGenerator->InitializeRootOutput()           ;
-         myEventGenerator->SetTargetThickness(m_detector->GetTargetThickness())  ;
-         myEventGenerator->SetTargetRadius(m_detector->GetTargetRadius())     ;
-         myEventGenerator->SetTargetCoordinate( m_detector->GetTargetX() ,
-               									m_detector->GetTargetY()   ,
-               									m_detector->GetTargetZ())  ;
-         m_EventGenerator = myEventGenerator                            ;
+         check_Transfert = true;
+         VEventGenerator* myEventGenerator = new EventGeneratorTransfert();
+         EventGeneratorFile.close();
+         myEventGenerator->ReadConfiguration(Path);
+         EventGeneratorFile.open(Path.c_str());
+         myEventGenerator->InitializeRootOutput();
+         myEventGenerator->SetTarget(m_detector->GetTarget());
+         m_EventGenerator = myEventGenerator;
       }
 
       //Search for Transfert To Resonance
@@ -156,11 +148,7 @@ void PrimaryGeneratorAction::ReadEventGeneratorFile(string Path)
          myEventGenerator->ReadConfiguration(Path)                      ;
          EventGeneratorFile.open(Path.c_str())                          ;
          myEventGenerator->InitializeRootOutput()           ;
-         myEventGenerator->SetTargetThickness(m_detector->GetTargetThickness())  ;
-         myEventGenerator->SetTargetRadius(m_detector->GetTargetRadius())     ;
-         myEventGenerator->SetTargetCoordinate(m_detector->GetTargetX() ,
-               m_detector->GetTargetY()   ,
-               m_detector->GetTargetZ())  ;
+         myEventGenerator->SetTarget(m_detector->GetTarget());
          m_EventGenerator = myEventGenerator                            ;
       }
    }
diff --git a/NPSimulation/src/Target.cc b/NPSimulation/src/Target.cc
index 1d88eda135602fbe0a7030bb319ba20d8d17e830..51eba32448deaa208974316e2729fddc5e7b8902 100644
--- a/NPSimulation/src/Target.cc
+++ b/NPSimulation/src/Target.cc
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : 06/11/2009                                               *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This class describe Cryogenic and standard Target. Derived from VDetector*
@@ -17,9 +17,17 @@
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
  *  Some improvment need to be done in material dealing                      *
+ *                                                                           *
+ *  + 16/09/2009: Add support for positioning the target with an angle with  *
+ *                respect to the beam (N. de Sereville)                      *
+ *  + 16/09/2009: Add CH2 material for targets (N. de Sereville)             *
+ *  + 06/11/2009: Add new Token m_TargetNbLayers defining the number of steps used   *
+ *                to slow down the beam in the target (N. de Sereville)      *
+ *                                                                           *
  *****************************************************************************/
 // C++ header
 #include <fstream>
+#include <limits>
 
 // G4 geometry header
 #include "G4Tubs.hh"
@@ -34,7 +42,11 @@
 #include "G4VPhysicalVolume.hh"
 #include "G4VisAttributes.hh"
 #include "G4Colour.hh"
-
+#include "G4EmCalculator.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ParticleTable.hh"
+#include "Randomize.hh"
+using namespace CLHEP ;
 // NPTool header
 #include"Target.hh"
 
@@ -45,12 +57,14 @@ using namespace std;
 // Specific Method of this class
 Target::Target()
 {
-   m_TargetType      = true   ;
-   m_TargetThickness    = 0   ;
-   m_TargetRadius    = 0   ;
+   m_TargetType		= true;
+   m_TargetThickness	= 0   ;
+   m_TargetAngle	= 0   ;
+   m_TargetRadius	= 0   ;
    m_WindowsThickness   = 0   ;
    m_TargetTemperature  = 0   ;
-   m_TargetPressure  = 0   ;
+   m_TargetPressure  	= 0   ;
+   m_TargetNbLayers      = 50;	// Number of steps by default
 }
 
 G4Material* Target::GetMaterialFromLibrary(G4String MaterialName, G4double Temperature, G4double Pressure)
@@ -157,6 +171,16 @@ G4Material* Target::GetMaterialFromLibrary(G4String MaterialName, G4double Tempe
       return myMaterial;
    }
 
+   else if (MaterialName == "CH2") {
+      G4Element* C  = new G4Element("Carbon"  , "C" , 6. , 12.011*g / mole);
+      G4Element* H  = new G4Element("Hydrogen", "H" , 1. ,  1.01 *g / mole);
+
+      G4Material* myMaterial = new G4Material("CH2", 0.9*g / cm3, 2);
+      myMaterial->AddElement(C , 1);
+      myMaterial->AddElement(H , 2);
+      return myMaterial;
+   }
+
    else {
       G4cout << "No Matching Material in the Target Library Default is Vacuum" << G4endl;
       G4Element* N = new G4Element("Nitrogen", "N", 7., 14.01*g / mole);
@@ -178,49 +202,46 @@ G4Material* Target::GetMaterialFromLibrary(G4String MaterialName, G4double Tempe
 // Called in DetecorConstruction::ReadDetextorConfiguration Method
 void Target::ReadConfiguration(string Path)
 {
-   ifstream ConfigFile           ;
-   ConfigFile.open(Path.c_str()) ;
-   string LineBuffer          ;
-   string DataBuffer          ;
-
+   ifstream ConfigFile;
+   ConfigFile.open(Path.c_str());
+   string LineBuffer;
+   string DataBuffer;
 	
-	bool ReadingStatusTarget = false ;
-	bool ReadingStatusCryoTarget = false ;
-	
-	bool check_Thickness = false ;
-	bool check_Radius = false ;
-	bool check_Material = false ;
-	bool check_X = false ;
-	bool check_Y = false ;
-	bool check_Z = false ;
-	
-	bool check_Temperature = false ;
-	bool check_Pressure = false ;
-	bool check_WinThickness = false ;
-	bool check_WinMaterial = false ;
+   bool ReadingStatusTarget = false ;
+   bool ReadingStatusCryoTarget = false ;
+
+   bool check_Thickness = false ;
+   bool check_Radius = false ;
+   bool check_Angle = false ;
+   bool check_Material = false ;
+   bool check_X = false ;
+   bool check_Y = false ;
+   bool check_Z = false ;
+   bool check_m_TargetNbLayers = false;
+
+   bool check_Temperature = false ;
+   bool check_Pressure = false ;
+   bool check_WinThickness = false ;
+   bool check_WinMaterial = false ;
    	
    while (!ConfigFile.eof()) {
-     
-     
       getline(ConfigFile, LineBuffer);
       if (LineBuffer.compare(0, 6, "Target") == 0) {
          cout << "Target Found" << endl;
          m_TargetType = true ;
          ReadingStatusTarget = true ;
-         }
-         
+      }
       else if (LineBuffer.compare(0, 10, "CryoTarget") == 0) {
          cout << "Cryogenic Target Found" << endl;
          m_TargetType = false ;
          ReadingStatusCryoTarget = true ;
-         }
-         
-	while(ReadingStatusTarget){
-	
-			ConfigFile >> DataBuffer;
+      }
+
+      while (ReadingStatusTarget) {
+         ConfigFile >> DataBuffer;
 	
       		//Search for comment Symbol %
-      		if (DataBuffer.compare(0, 1, "%") == 0) {/*Do Nothing*/;}
+      		if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
       		
 	        else if (DataBuffer.compare(0, 10, "THICKNESS=") == 0) {
 	        	check_Thickness = true ;
@@ -229,6 +250,13 @@ void Target::ReadConfiguration(string Path)
 	             cout << "Target Thickness: "  << m_TargetThickness << endl     ;
 	         }
 
+	        else if (DataBuffer.compare(0, 6, "ANGLE=") == 0) {
+	        	check_Angle = true ;
+	            ConfigFile >> DataBuffer;
+	            m_TargetAngle = atof(DataBuffer.c_str()) * deg;
+	             cout << "Target Angle: "  << m_TargetAngle << endl     ;
+	         }
+
 	        else if (DataBuffer.compare(0, 7, "RADIUS=") == 0) {
 	        	check_Radius = true ;
 	            ConfigFile >> DataBuffer;
@@ -264,6 +292,13 @@ void Target::ReadConfiguration(string Path)
 	            cout  << m_TargetZ / mm << " )" << endl ;           
 	         }
 
+	        else if (DataBuffer.compare(0, 9, "NbLayers=") == 0) {
+	        	check_m_TargetNbLayers = true ;
+	            ConfigFile >> DataBuffer;
+	            m_TargetNbLayers = atoi(DataBuffer.c_str());
+	            cout  << "Number of steps for slowing down the beam in target: " << m_TargetNbLayers << endl;
+	         }
+
 	        ///////////////////////////////////////////////////
 			//	If no Beam Token and no comment, toggle out
 	         else 
@@ -351,6 +386,13 @@ void Target::ReadConfiguration(string Path)
 	            cout << m_TargetZ / mm << " )" << endl ;
 	         }
 
+	        else if (DataBuffer.compare(0, 9, "m_TargetNbLayers=") == 0) {
+	        	check_m_TargetNbLayers = true ;
+	            ConfigFile >> DataBuffer;
+	            m_TargetNbLayers = atoi(DataBuffer.c_str());
+	            cout  << "Number of steps for slowing down the beam in target: " << m_TargetNbLayers << endl;
+	         }
+
 	        ///////////////////////////////////////////////////
 			//	If no Beam Token and no comment, toggle out
 	         else 
@@ -377,20 +419,25 @@ void Target::ConstructDetector(G4LogicalVolume* world)
 // If don't you will have a Warning unused variable 'myPVP'
    G4VPhysicalVolume* PVPBuffer ;
 
-   if (m_TargetType) {
+   if (m_TargetType) {	// case of standard target
 
       if (m_TargetThickness > 0) {
          G4Tubs*            solidTarget = new G4Tubs("solidTarget", 0, m_TargetRadius, 0.5*m_TargetThickness, 0*deg, 360*deg);
          G4LogicalVolume*   logicTarget = new G4LogicalVolume(solidTarget, m_TargetMaterial, "logicTarget");
+
+         // rotation of target
+         G4RotationMatrix *rotation = new G4RotationMatrix();
+         rotation->rotateY(m_TargetAngle);
+
          PVPBuffer =
-            new G4PVPlacement(0, G4ThreeVector(m_TargetX, m_TargetY, m_TargetZ), logicTarget, "Target", world, false, 0);
+            new G4PVPlacement(rotation, G4ThreeVector(m_TargetX, m_TargetY, m_TargetZ), logicTarget, "Target", world, false, 0);
 
          G4VisAttributes* TargetVisAtt = new G4VisAttributes(G4Colour(0., 0., 1.));//Blue
          logicTarget->SetVisAttributes(TargetVisAtt);
       }
    }
 
-   else {
+   else {	// case of cryogenic target
 
       if (m_TargetThickness > 0) {
          G4Tubs*            solidTarget = new G4Tubs("solidTarget", 0, m_TargetRadius, 0.5*m_TargetThickness, 0*deg, 360*deg);
@@ -415,20 +462,20 @@ void Target::ConstructDetector(G4LogicalVolume* world)
          G4LogicalVolume*   logicWindowsB = new G4LogicalVolume(solidWindowsB, m_WindowsMaterial, "logicTargetWindowsB");
 
          PVPBuffer =
-            new G4PVPlacement(0                                                           ,
-                  TargetPos + G4ThreeVector(0., 0., 0.5*(m_TargetThickness + m_WindowsThickness))      ,
-                  logicWindowsF                                                  ,
-                  "Target Window Front"                                             ,
-                  world                                                       ,
-                  false, 0);
+            new G4PVPlacement(	0                                                           										,
+                  							TargetPos + G4ThreeVector(0., 0., 0.5*(m_TargetThickness + m_WindowsThickness)) ,
+                  							logicWindowsF                                                  									,
+                 							 	"Target Window Front"                                            							 	,
+                 	 							world                                                       										,
+                 	 							false, 0																																				);
 
          PVPBuffer =
-            new G4PVPlacement(0                                                           ,
-                  TargetPos + G4ThreeVector(0., 0., -0.5*(m_TargetThickness + m_WindowsThickness))  ,
-                  logicWindowsB                                                  ,
-                  "Target Window Back"                                           ,
-                  world                                                       ,
-                  false, 0);
+            new G4PVPlacement(	0                                                           											,
+							                  TargetPos + G4ThreeVector(0., 0., -0.5*(m_TargetThickness + m_WindowsThickness))  ,
+							                  logicWindowsB                                                  										,
+							                  "Target Window Back"                                           										,
+							                  world                                                       											,
+							                  false, 0																																					);
 
          G4VisAttributes* WindowsVisAtt = new G4VisAttributes(G4Colour(0.5, 1., 0.5));
          logicWindowsF->SetVisAttributes(WindowsVisAtt);
@@ -447,4 +494,168 @@ void Target::InitializeRootOutput()
 // Called at in the EventAction::EndOfEventAvtion
 void Target::ReadSensitive(const G4Event*)
 {}
+	
+void Target::CalculateBeamInteraction(	double MeanPosX, double SigmaPosX, double MeanPosTheta, double SigmaPosTheta,
+				                                double MeanPosY, double SigmaPosY, double MeanPosPhi,   double SigmaPosPhi,
+				                                double IncidentBeamEnergy,
+                                 				G4ParticleDefinition* BeamName,
+				                                G4ThreeVector &InterCoord, double &AngleEmittanceTheta, double &AngleEmittancePhi,
+				                                double &AngleIncidentTheta, double &AngleIncidentPhi,
+				                                double &FinalBeamEnergy)
+{
 
+      // target parameters
+			G4ThreeVector TargetNormal = G4ThreeVector(		sin(m_TargetAngle)		,
+      																							0											,
+      																							cos(m_TargetAngle)		);
+			
+      // beam interaction parameters
+      double x0 = 1000 * cm;
+      double y0 = 1000 * cm;
+      double z0 =    0 * cm;
+      double dz =    0 * cm;
+
+      // calculate emittance parameters (x,theta) and (y,phi)
+      if (m_TargetRadius != 0) {	// case of finite target dimensions
+         while (sqrt(x0*x0 + y0*y0) > m_TargetRadius) {
+            RandomGaussian2D(MeanPosX, MeanPosTheta, SigmaPosX, SigmaPosTheta, x0, AngleEmittanceTheta);
+            RandomGaussian2D(MeanPosY, MeanPosPhi,   SigmaPosY, SigmaPosPhi,   y0, AngleEmittancePhi);
+         }
+         // in case target is tilted, correct the z-position of interaction
+         // x is the vertical axis
+         dz = x0 * tan(m_TargetAngle);
+      }
+      else {			// if no target radius is given consider a point-like target
+         RandomGaussian2D(0, 0, 0, SigmaPosTheta, x0, AngleEmittanceTheta);
+         RandomGaussian2D(0, 0, 0, SigmaPosPhi,   y0, AngleEmittancePhi);
+      }
+
+      // Calculate incident angle in spherical coordinate, passing by the direction vector dir      
+      double Xdir = sin(AngleEmittanceTheta);
+      double Ydir = sin(AngleEmittancePhi);
+      double Zdir = cos(AngleEmittanceTheta) + cos(AngleEmittancePhi);
+			G4ThreeVector BeamDir = G4ThreeVector(Xdir,Ydir,Zdir)	;
+			
+      AngleIncidentTheta = BeamDir.theta() 	;
+      AngleIncidentPhi   = BeamDir.phi()		;
+      if (AngleIncidentPhi   < 0)    AngleIncidentPhi += 2*pi	;
+      if (AngleIncidentTheta < 1e-6) AngleIncidentPhi  = 0		;
+
+      // Calculation of effective target thickness and z-position of interaction
+      // when the target is tilted wrt the beam axis
+      double EffectiveThickness = m_TargetThickness / (BeamDir.unit()).dot(TargetNormal.unit());
+      double uniform = RandFlat::shoot();
+      z0 = dz + (-m_TargetThickness / 2 + uniform * m_TargetThickness);
+
+      // Calculate the effective thickness before interaction in target
+      // This is useful to slow down the beam
+      double EffectiveTargetThicknessBeforeInteraction = m_TargetThickness  * uniform / cos(AngleIncidentTheta);
+
+      // Move to the target position
+      x0 += m_TargetX;
+      y0 += m_TargetY;
+      z0 += m_TargetZ;
+      InterCoord = G4ThreeVector(x0, y0, z0);
+      
+		if(m_TargetType)
+			{
+				G4EmCalculator emCalculator;		
+				if(m_TargetThickness!=0)
+					{
+						for (G4int i = 0; i < m_TargetNbLayers; i++) 
+							{
+								G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_TargetMaterial);
+								G4double de   = dedx * EffectiveTargetThicknessBeforeInteraction / m_TargetNbLayers;
+								IncidentBeamEnergy -= de;
+							}
+					}
+			}
+			
+		else
+			{		G4EmCalculator emCalculator;		
+					//	Windows
+					if(m_WindowsThickness!=0)
+					for (G4int i = 0; i < m_TargetNbLayers; i++) 
+						{
+							G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_WindowsMaterial);
+							G4double de   = dedx * m_WindowsThickness * uniform / (cos(AngleIncidentTheta)*m_TargetNbLayers);
+							IncidentBeamEnergy -= de;
+						}
+						
+					// Target
+					if(m_TargetThickness!=0)
+					for (G4int i = 0; i < m_TargetNbLayers; i++) 
+						{
+							G4double dedx = emCalculator.ComputeTotalDEDX(IncidentBeamEnergy, BeamName, m_TargetMaterial);
+							G4double de   = dedx * EffectiveTargetThicknessBeforeInteraction / m_TargetNbLayers;
+							IncidentBeamEnergy -= de;
+						}
+			}
+		
+FinalBeamEnergy=IncidentBeamEnergy;
+}
+
+
+
+void Target::RandomGaussian2D(double MeanX, double MeanY, double SigmaX, double SigmaY, double &X, double &Y, double NumberOfSigma)
+{
+   if (SigmaX != 0) {
+      X = 2 * NumberOfSigma*SigmaX;
+      while (X > NumberOfSigma*SigmaX) X = RandGauss::shoot(MeanX, SigmaX);
+
+      double a = NumberOfSigma * SigmaX/2;
+      double b = NumberOfSigma * SigmaY/2;
+      double SigmaYPrim = b * sqrt(1 - X*X / (a*a));
+
+      SigmaYPrim = 2*SigmaYPrim / NumberOfSigma;
+      Y = RandGauss::shoot(MeanY, SigmaYPrim);
+   }
+   else {
+      X = MeanX;
+      Y = RandGauss::shoot(MeanY, SigmaY);
+   }
+}
+
+//	Generate a DEDX file table using the material used in the target
+void Target::WriteDEDXTable(G4ParticleDefinition* Particle ,G4double Emin,G4double Emax)
+	{
+		//	Opening hte output file
+		G4String GlobalPath = getenv("NPTOOL");
+   	G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + m_TargetMaterial->GetName() + ".G4table";
+	
+		ofstream File		;
+		File.open(Path)	;
+		
+		if(!File) return ;
+		
+		File	<< "Table from Geant4 generate using NPSimulation \t"
+					<< "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_TargetMaterial->GetName() << endl ;
+		
+		G4EmCalculator emCalculator;
+	
+		for (G4double E=Emin; E < Emax; E+=(Emax-Emin)/10000.) 
+						{
+							G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_TargetMaterial);
+							File << E/MeV << "\t" << dedx/(MeV/micrometer) << endl ;
+						}
+		File.close();
+		
+		if(!m_TargetType)
+			{
+				G4String Path = GlobalPath + "/Inputs/EnergyLoss/" + Particle->GetParticleName() + "_" + m_WindowsMaterial->GetName() + ".G4table";
+				File.open(Path)		;
+				if(!File) return 	;
+				File	<< "Table from Geant4 generate using NPSimulation \t " 
+					<< "Particle: " << Particle->GetParticleName() << "\tMaterial: " << m_WindowsMaterial->GetName() << endl ;
+					
+				for (G4double E=Emin; E < Emax; E+=(Emax-Emin)/10000.) 
+						{
+//							G4double dedx = emCalculator.ComputeTotalDEDX(E, Particle, m_WindowsMaterial);
+							  G4double dedx = emCalculator.ComputeDEDX(	E, Particle ,
+                       																		"ionIoni",  m_WindowsMaterial);
+								File << E/MeV << "\t" << dedx/(MeV/micrometer) << endl ;
+						}
+			}
+		File.close();
+		
+	}
diff --git a/NPSimulation/src/ThinSi.cc b/NPSimulation/src/ThinSi.cc
index 94a2313adfa6c5e4e6008f8082177da87fb309cd..3af43f06ac2bb0ff45dc5cae53c8bd7b388273dd 100644
--- a/NPSimulation/src/ThinSi.cc
+++ b/NPSimulation/src/ThinSi.cc
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : October 2009                                             *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  This class describe a 20um Silicium detector                             *
@@ -22,7 +22,7 @@
 // C++ headers
 #include <sstream>
 #include <cmath>
-
+#include <limits>
 //G4 Geometry object
 #include "G4Trd.hh"
 #include "G4Box.hh"
@@ -46,9 +46,9 @@
 // NPTool header
 #include "ThinSi.hh"
 #include "GeneralScorers.hh"
-#include "Must2Scorers.hh"
-#include "MUST2Array.hh"
+#include "ThinSiScorers.hh"
 #include "RootOutput.h"
+using namespace THINSI;
 
 // CLHEP header
 #include "CLHEP/Random/RandGauss.h"
@@ -62,11 +62,17 @@ using namespace CLHEP;
 // ThinSi Specific Method
 ThinSi::ThinSi()
 {
-
+		InitializeMaterial()			;
+		m_Event = new TSSSDData()	;
 }
 
 ThinSi::~ThinSi()
-{}
+{
+		delete m_MaterialSilicon 		;
+   	delete m_MaterialAl 				;
+   	delete m_MaterialVacuum 		;
+
+}
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 void ThinSi::AddTelescope(G4ThreeVector TL         ,
       G4ThreeVector BL        ,
@@ -125,28 +131,6 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
    Number << NbrTelescopes                   ;
    DetectorNumber = Number.str()             ;
 
-////////////////////////////////////////////////////////////////
-/////////////////Material Definition ///////////////////////////
-////////////////////////////////////////////////////////////////
-   G4Element* N   = new G4Element("Nitrogen" , "N"  , 7  , 14.01  * g / mole);
-   G4Element* O   = new G4Element("Oxigen"   , "O"  , 8  , 16.00  * g / mole);
-
-   G4double a, z, density;
-   // Si
-   a = 28.0855 * g / mole;
-   density = 2.321 * g / cm3;
-   G4Material* Silicon = new G4Material("Si", z = 14., a, density);
-
-   // Al
-   density = 2.702 * g / cm3;
-   a = 26.98 * g / mole;
-   G4Material* Al = new G4Material("Al", z = 13., a, density);
-
-   //  Vacuum
-   density = 0.000000001 * mg / cm3;
-   G4Material* Vacuum = new G4Material("Vacuum", density, 2);
-   Vacuum->AddElement(N, .7);
-   Vacuum->AddElement(O, .3);
 
 ////////////////////////////////////////////////////////////////
 /////////General Geometry Parameter Definition /////////////////
@@ -162,7 +146,7 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
    G4Box* solidThinSi = new G4Box(Name, 0.5*DetectorSize, 0.5*DetectorSize, 0.5*FrameThickness*mm);
 
    G4LogicalVolume* logicThinSi =
-      new G4LogicalVolume(solidThinSi, Vacuum, Name, 0, 0);
+      new G4LogicalVolume(solidThinSi, m_MaterialVacuum, Name, 0, 0);
 
    PVPBuffer =
       new G4PVPlacement(G4Transform3D(*Det_rot, Det_pos)  ,
@@ -173,14 +157,14 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
             0);
 
    // Frame is made of 4 thick box (2 Horizontal and 2 Vertical)
-   G4Box* solidFrameHorizontal = new G4Box(Name + "Frame", 0.5*SiliconSize, 0.5*(DetectorSize - SiliconSize) / 2, 0.5*FrameThickness*mm)   ;
-   G4Box* solidFrameVertical  = new G4Box(Name + "Frame", 0.5*(DetectorSize - SiliconSize) / 2, 0.5*DetectorSize, 0.5*FrameThickness*mm)   ;
+   G4Box* solidFrameHorizontal = new G4Box(Name + "_Frame", 0.5*SiliconSize, 0.5*(DetectorSize - SiliconSize) / 2, 0.5*FrameThickness*mm)   ;
+   G4Box* solidFrameVertical  = new G4Box(Name + "_Frame", 0.5*(DetectorSize - SiliconSize) / 2, 0.5*DetectorSize, 0.5*FrameThickness*mm)   ;
 
    G4LogicalVolume* logicFrameHorizontal =
-      new G4LogicalVolume(solidFrameHorizontal, Al, Name, 0, 0);
+      new G4LogicalVolume(solidFrameHorizontal, m_MaterialAl, Name, 0, 0);
 
    G4LogicalVolume* logicFrameVertical =
-      new G4LogicalVolume(solidFrameVertical, Al, Name, 0, 0);
+      new G4LogicalVolume(solidFrameVertical, m_MaterialAl, Name, 0, 0);
 
    G4ThreeVector FrameTopPosition      = G4ThreeVector(0 ,  0.5 * SiliconSize + 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ;
    G4ThreeVector FrameBottomPosition   = G4ThreeVector(0 , -0.5 * SiliconSize - 0.5 * (DetectorSize - SiliconSize) / 2 , 0) ;
@@ -192,7 +176,7 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
       new G4PVPlacement(0                 ,
             FrameTopPosition     ,
             logicFrameHorizontal ,
-            Name + "Frame"         ,
+            Name + "_Frame"         ,
             logicThinSi          ,
             false             ,
             0);
@@ -201,7 +185,7 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
       new G4PVPlacement(0                 ,
             FrameBottomPosition     ,
             logicFrameHorizontal ,
-            Name + "Frame"         ,
+            Name + "_Frame"         ,
             logicThinSi          ,
             false             ,
             0);
@@ -210,7 +194,7 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
       new G4PVPlacement(0                 ,
             FrameLeftPosition    ,
             logicFrameVertical      ,
-            Name + "Frame"         ,
+            Name + "_Frame"         ,
             logicThinSi          ,
             false             ,
             0);
@@ -219,7 +203,7 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
       new G4PVPlacement(0                 ,
             FrameRightPosition      ,
             logicFrameVertical      ,
-            Name + "Frame"         ,
+            Name + "_Frame"         ,
             logicThinSi          ,
             false             ,
             0);
@@ -233,39 +217,26 @@ void ThinSi::VolumeMaker(	G4int            	DetNumber      	,
       new G4Box("ThinSiAlu", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*AluThickness) ;
 
    G4LogicalVolume* logicAlu  =
-      new G4LogicalVolume(solidAlu, Al, "logicAlu", 0, 0, 0)    ;
+      new G4LogicalVolume(solidAlu, m_MaterialAl, "logicAlu", 0, 0, 0)    ;
 
    PVPBuffer =
-      new G4PVPlacement(0  ,  posAluFront ,  logicAlu ,  Name + "AluFront"   ,  logicThinSi ,  true, 0)  ;
+      new G4PVPlacement(0  ,  posAluFront ,  logicAlu ,  Name + "_AluFront"   ,  logicThinSi ,  true, 0)  ;
 
    PVPBuffer =
-      new G4PVPlacement(0  ,  posAluBack  ,  logicAlu ,  Name + "AluBack"    ,  logicThinSi ,  true, 0)  ;
+      new G4PVPlacement(0  ,  posAluBack  ,  logicAlu ,  Name + "_AluBack"    ,  logicThinSi ,  true, 0)  ;
 
 
    G4Box*   solidSi  =
       new G4Box("ThinSi", 0.5*SiliconSize, 0.5*SiliconSize, 0.5*SiliconThickness)   ;
 
    G4LogicalVolume* logicSi  =
-      new G4LogicalVolume(solidSi, Silicon, "logicSi", 0, 0, 0)           ;
+      new G4LogicalVolume(solidSi, m_MaterialSilicon, "logicSi", 0, 0, 0)           ;
 
    PVPBuffer =
-      new G4PVPlacement(0, posSi, logicSi, Name + "Si", logicThinSi, true, 0)   ;
+      new G4PVPlacement(0, posSi, logicSi, Name + "_Si", logicThinSi, true, 0)   ;
 
-   //Set Add. Silicon strip sensible
-   //instantiate a new scorer
-   G4MultiFunctionalDetector* ThinSiScorer = new G4MultiFunctionalDetector("ThinSi" + DetectorNumber);
    //attach it to the Silicon plate
-   logicSi ->SetSensitiveDetector(ThinSiScorer);
-   //and declare it to the SDManager
-   G4SDManager::GetSDMpointer()->AddNewDetector(ThinSiScorer);
-
-   //instantiate primitive scorer
-   G4VPrimitiveScorer* ThinSiEnergy       ;
-
-   //create primitive scorer
-   ThinSiEnergy = new MUST2::PSStripE("StripEnergy", 0)    ;
-   //and register it to the multifunctionnal detector
-   ThinSiScorer->RegisterPrimitive(ThinSiEnergy)      ;
+   logicSi ->SetSensitiveDetector(m_StripScorer);
 
 }
 
@@ -303,7 +274,7 @@ void ThinSi::ReadConfiguration(string Path)
       
 	      	getline(ConfigFile, LineBuffer);
 
-			//	If line is a Start Up MUST2 bloc, Reading toggle to true      
+			//	If line is a Start Up ThinSi bloc, Reading toggle to true      
 	      	if (LineBuffer.compare(0, 6, "ThinSi") == 0) 
 		      	{
 		        	 G4cout << "///" << G4endl           ;
@@ -322,7 +293,7 @@ void ThinSi::ReadConfiguration(string Path)
 					ConfigFile >> DataBuffer ;
 
 					//	Comment Line 
-					if (DataBuffer.compare(0, 1, "%") == 0) {/*do nothing */;}
+					if (DataBuffer.compare(0, 1, "%") == 0) {	ConfigFile.ignore ( std::numeric_limits<std::streamsize>::max(), '\n' );}
 
 						//	Finding another telescope (safety), toggle out
 					else if (DataBuffer.compare(0, 6, "ThinSi") == 0) {
@@ -583,52 +554,167 @@ void ThinSi::InitializeRootOutput()
 {
    RootOutput *pAnalysis = RootOutput::getInstance();
    TTree *pTree = pAnalysis->GetTree();
-   pTree->Branch("ThinSiEnergy", &m_Energy, "ThinSiEnergy/D") ;
+   pTree->Branch("ThinSi", "TSSSDData", &m_Event) ;
 }
 
 // Read sensitive part and fill the Root tree.
 // Called at in the EventAction::EndOfEventAvtion
 void ThinSi::ReadSensitive(const G4Event* event)
 {
-   G4String DetectorNumber    ;
-   m_Energy = 0 ;
+  	m_Event->Clear();
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////// Used to Read Event Map of detector //////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
 
 // Si
-   std::map<G4int, G4double*>::iterator Energy_itr     ;
-   G4THitsMap<G4double>* EnergyHitMap              ;
-
-
-
+	G4THitsMap<G4int>*	  DetNbrHitMap							;  
+	G4THitsMap<G4int>*	  StripNbrHitMap						;    
+	G4THitsMap<G4double>* EnergyHitMap            	;
+	G4THitsMap<G4double>* TimeHitMap             		;
+
+	std::map<G4int, G4int*>::iterator DetNbr_itr  	;
+	std::map<G4int, G4int*>::iterator StripNbr_itr  ;
+	std::map<G4int, G4double*>::iterator Energy_itr ;
+	std::map<G4int, G4double*>::iterator Time_itr   ;
 //////////////////////////////////////////////////////////////////////////////////////
 //////////////////////////////////////////////////////////////////////////////////////
+      // Read the Scorer associate to the Silicon Strip
 
-   G4int NumberOfDetector = m_DefinitionType.size()  ;
-   for (G4int i = 0 ; i < NumberOfDetector ; i++) {
-      G4int k = i + 1;
-      ostringstream buffer;
-      buffer << k;
-      DetectorNumber = buffer.str();
+			//DetectorNumber	
+      G4int DetNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/DetectorNumber")   	;
+      DetNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(DetNbrCollectionID))                 				;
+      DetNbr_itr = DetNbrHitMap->GetMap()->begin()                                                       								;
+      
+      //StripNumber	
+      G4int StripNbrCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripNumber")  			;
+      StripNbrHitMap = (G4THitsMap<G4int>*)(event->GetHCofThisEvent()->GetHC(StripNbrCollectionID))                 			;
 
-      // Read the Scorer associate to the Silicon Strip
       //Energy
-      G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi" + DetectorNumber + "/StripEnergy")   ;
-      EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                 ;
-      Energy_itr = EnergyHitMap->GetMap()->begin()                                                       ;
+      G4int StripEnergyCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripEnergy")   		;
+      EnergyHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripEnergyCollectionID))                 		;
+
+			//Time
+      G4int StripTimeCollectionID = G4SDManager::GetSDMpointer()->GetCollectionID("ThinSi_StripScorer/StripTime")   				;
+      TimeHitMap = (G4THitsMap<G4double>*)(event->GetHCofThisEvent()->GetHC(StripTimeCollectionID))                 				;
+
+		  G4int sizeN = DetNbrHitMap		->entries() 	;
+		  G4int sizeS = StripNbrHitMap	->entries() ;
+	    G4int sizeE = EnergyHitMap		->entries() 	;
+	    G4int sizeT = TimeHitMap			->entries() 		;
+  
+		// Loop on Det Number
+    for (G4int l = 0 ; l < sizeN ; l++) 
+				{
+	        G4int N     =      *(DetNbr_itr->second)    ;
+	        G4int NTrackID  =   DetNbr_itr->first - N		;
+	      
+	        if (N > 0) 
+						{
+								m_Event->SetEnergyDetectorNbr(N)						;
+								m_Event->SetTimeDetectorNbr(N)						;
+								
+						//  Strip Number
+				        StripNbr_itr = StripNbrHitMap->GetMap()->begin();
+				        for (G4int h = 0 ; h < sizeS ; h++) {
+				            G4int STrackID  =   StripNbr_itr->first  - N    ;
+				            G4int S         = *(StripNbr_itr->second)      	;
+										
+				            if (STrackID == NTrackID) {
+				             	 m_Event->SetEnergyStripNbr(S)		;
+				             	 m_Event->SetTimeStripNbr(S)		;
+				            }
+				            
+				            StripNbr_itr++;
+				        	}
+								
+						//  Energy
+				        Energy_itr = EnergyHitMap->GetMap()->begin();
+				        for (G4int h = 0 ; h < sizeE ; h++) {
+				            G4int ETrackID  =   Energy_itr->first  - N    ;
+				            G4double E      = *(Energy_itr->second)      	;
+
+				            if (ETrackID == NTrackID) {
+				               m_Event->SetEnergy( RandGauss::shoot(E, ResoEnergy ) )    ;
+				            }
+				            
+				            Energy_itr++;
+				        	}
+
+
+				        //  Time
+				        Time_itr = TimeHitMap->GetMap()->begin();
+				        for (G4int h = 0 ; h < sizeT ; h++) {
+				            G4int TTrackID  =   Time_itr->first   - N    ;
+				            G4double T     = *(Time_itr->second)      ;
+
+				            if (TTrackID == NTrackID) {
+				               	m_Event->SetTime( RandGauss::shoot(T, ResoTime ) )    ;
+				            }
+				            
+				            Time_itr++;
+				        }
+
+	       	 }
+
+	        DetNbr_itr++;
+   		}
+    
+    // clear map for next event
+    
+    DetNbrHitMap    	->clear()	;
+    StripNbrHitMap    ->clear()	;
+    EnergyHitMap   		->clear() ; 
+    TimeHitMap				->clear()	;    
+}
 
-      // Loop on Strip energy
-      for (G4int l = 0 ; l < EnergyHitMap->entries() ; l++) {
-         //G4int ETrackID  =   Energy_itr->first      ;
-         G4double E     = *(Energy_itr->second)    ;
 
-         if (E > 0) {
-            m_Energy = RandGauss::shoot(E, ResoEnergy);
-         }
+void ThinSi::InitializeScorers()
+	{
+
+		//	Silicon Associate Scorer
+			m_StripScorer = new G4MultiFunctionalDetector("ThinSi_StripScorer");
+			
+			G4VPrimitiveScorer* DetNbr 														= new GENERALSCORERS::PSDetectorNumber("DetectorNumber","ThinSi_", 0)  	;
+			G4VPrimitiveScorer* StripNbr 													= new PSStripNumber("StripNumber",0,SiliconSize, NumberOfStrip)		; 
+			G4VPrimitiveScorer* Energy 														= new GENERALSCORERS::PSEnergy("StripEnergy","ThinSi_", 0)             	;			
+			G4VPrimitiveScorer* TOF 															= new GENERALSCORERS::PSTOF("StripTime","ThinSi_", 0)                  	;          					 		 
+			
+
+		//and register it to the multifunctionnal detector
+			m_StripScorer->RegisterPrimitive(DetNbr)             				;
+			m_StripScorer->RegisterPrimitive(StripNbr)             			;
+			m_StripScorer->RegisterPrimitive(Energy)             				;
+			m_StripScorer->RegisterPrimitive(TOF)                				;
+
+	 	//	Add All Scorer to the Global Scorer Manager
+		  G4SDManager::GetSDMpointer()->AddNewDetector(m_StripScorer) ;
+		}
+
+////////////////////////////////////////////////////////////////
+/////////////////Material Definition ///////////////////////////
+////////////////////////////////////////////////////////////////
+void ThinSi::InitializeMaterial()
+	{
+
+		 G4Element* N   = new G4Element("Nitrogen" , "N"  , 7  , 14.01  * g / mole);
+	   G4Element* O   = new G4Element("Oxigen"   , "O"  , 8  , 16.00  * g / mole);
+
+	   G4double a, z, density;
+	   // Si
+	   a = 28.0855 * g / mole;
+	   density = 2.321 * g / cm3;
+	   m_MaterialSilicon = new G4Material("Si", z = 14., a, density);
+
+	   // Al
+	   density = 2.702 * g / cm3;
+	   a = 26.98 * g / mole;
+	   m_MaterialAl = new G4Material("Al", z = 13., a, density);
+
+	   //  Vacuum
+	   density = 0.000000001 * mg / cm3;
+	   m_MaterialVacuum = new G4Material("Vacuum", density, 2);
+	   m_MaterialVacuum->AddElement(N, .7);
+	   m_MaterialVacuum->AddElement(O, .3);
+	}
+
 
-      }
-      // clear map for next event
-      EnergyHitMap   ->clear()   ;
-   }
-}
diff --git a/NPSimulation/src/ThinSiScorers.cc b/NPSimulation/src/ThinSiScorers.cc
new file mode 100644
index 0000000000000000000000000000000000000000..53faa61b07698e34d45c0fd94c3e67aab908c55c
--- /dev/null
+++ b/NPSimulation/src/ThinSiScorers.cc
@@ -0,0 +1,100 @@
+/*****************************************************************************
+ * Copyright (C) 2009   this file is part of the NPTool Project              *
+ *                                                                           *
+ * For the licensing terms see $NPTOOL/Licence/NPTool_Licence                *
+ * For the list of contributors see $NPTOOL/Licence/Contributors             *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
+ *                                                                           *
+ * Creation Date  : October 2009                                             *
+ * Last update    :                                                          *
+ *---------------------------------------------------------------------------*
+ * Decription:                                                               *
+ *  File holding the scorer specific to the ThinSi Detector                  *
+ *                                                                           *
+ *---------------------------------------------------------------------------*
+ * Comment:                                                                  *
+ * Those Scorer use TrackID as map index. This way ones can rebuild energy   *
+ *  deposit, time of flight or position,... particle by particle for each    *
+ *  event.Because standard scorer provide by G4 don't work this way but using* 
+ *  a global ID for each event you should not use those scorer with some G4  *
+ *  provided ones or being very carefull doing so.                           *
+ *****************************************************************************/
+#include "ThinSiScorers.hh"
+#include "G4UnitsTable.hh"
+#include "GeneralScorers.hh"
+#include <string>
+using namespace THINSI ;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//Strip position Scorer
+//X
+PSStripNumber::PSStripNumber(G4String name, G4int depth, G4double StripPlaneSize, G4int NumberOfStrip)
+      : G4VPrimitiveScorer(name, depth), HCID(-1)
+{
+   m_StripPlaneSize 	= StripPlaneSize 											;
+   m_NumberOfStrip    = NumberOfStrip  											;
+   m_StripPitch 			= m_StripPlaneSize / m_NumberOfStrip	;
+}
+
+PSStripNumber::~PSStripNumber()
+{
+   ;
+}
+
+G4bool PSStripNumber::ProcessHits(G4Step* aStep, G4TouchableHistory*)
+{
+	 int DetNbr = GENERALSCORERS::PickUpDetectorNumber(aStep, "ThinSi");
+
+   G4ThreeVector POS  = aStep->GetPreStepPoint()->GetPosition();
+   POS = aStep->GetPreStepPoint()->GetTouchableHandle()->GetHistory()->GetTopTransform().TransformPoint(POS);
+
+   G4double temp = (POS(0) + m_StripPlaneSize / 2.) / m_StripPitch   ;
+   G4double X = int(temp) + 1 ;
+   //Rare case where particle is close to edge of silicon plan
+   if (X == m_NumberOfStrip+1) X = m_NumberOfStrip;
+   G4double edep = aStep->GetTotalEnergyDeposit();
+   if (edep < 100*keV) return FALSE;
+   G4int  index =  aStep->GetTrack()->GetTrackID();
+   G4int S = X ;
+   EvtMap->set(index+DetNbr, S);
+   return TRUE;
+}
+
+void PSStripNumber::Initialize(G4HCofThisEvent* HCE)
+{
+   EvtMap = new G4THitsMap<G4int>(GetMultiFunctionalDetector()->GetName(), GetName());
+   if (HCID < 0) {
+      HCID = GetCollectionID(0);
+   }
+   HCE->AddHitsCollection(HCID, (G4VHitsCollection*)EvtMap);
+}
+
+void PSStripNumber::EndOfEvent(G4HCofThisEvent*)
+{
+   ;
+}
+
+void PSStripNumber::clear()
+{
+   EvtMap->clear();
+}
+
+void PSStripNumber::DrawAll()
+{
+   ;
+}
+
+void PSStripNumber::PrintAll()
+{
+   G4cout << " MultiFunctionalDet  " << detector->GetName() << G4endl ;
+   G4cout << " PrimitiveScorer " << GetName() << G4endl               ;
+   G4cout << " Number of entries " << EvtMap->entries() << G4endl     ;
+}
+
+
+
+
diff --git a/NPSimulation/src/VEventGenerator.cc b/NPSimulation/src/VEventGenerator.cc
index 4c91b86967940865564f815bbfbf5063e8d73556..bf2b8e82b1f30a6be7f2e75b8f067898ca3d2347 100644
--- a/NPSimulation/src/VEventGenerator.cc
+++ b/NPSimulation/src/VEventGenerator.cc
@@ -9,7 +9,7 @@
  * Original Author: Adrien MATTA  contact address: matta@ipno.in2p3.fr       *
  *                                                                           *
  * Creation Date  : January 2009                                             *
- * Last update    :                                                          *
+ * Last update    : 03/11/2009                                               *
  *---------------------------------------------------------------------------*
  * Decription:                                                               *
  *  All event generator added in the project should derive from this virtual * 
@@ -21,45 +21,29 @@
  *                                                                           *
  *---------------------------------------------------------------------------*
  * Comment:                                                                  *
+ *    + 03/11/09: Adding EffectiveThiknessBeforeInteraction in the           *
+ *                CalculateBeamInteraction() method (N. de Sereville)        *
  *                                                                           *
  *****************************************************************************/
 #include "VEventGenerator.hh"
 
-// ROOT headers
-#include"TMath.h"
+// C++ headers
+#include "cmath"
+
+// G4 headers
+#include "G4UnitsTable.hh"
 
 // CLHEP headers
 #include "Randomize.hh"
 
+
 VEventGenerator::VEventGenerator()
-	{
-	}
+{
+}
+
+
 
 VEventGenerator::~VEventGenerator()
-	{
-	}
+{
+}
 
-void VEventGenerator::RandomGaussian2D(double MeanX,double MeanY,double SigmaX,double SigmaY,double &X,double &Y,double NumberOfSigma)
-	{
-	
-		if(SigmaX!=0)
-			{
-				X=2* NumberOfSigma *SigmaX;
-				while(X>NumberOfSigma*SigmaX)
-				X = RandGauss::shoot( MeanX , SigmaX);
-				double a = NumberOfSigma * SigmaX/2  ;
-				double b = NumberOfSigma * SigmaY/2  ;
-				 
-				double SigmaYPrim = b * sqrt(  1 - X*X / (a*a) ) ;
-				SigmaYPrim = 2*SigmaYPrim / NumberOfSigma ; 
-			
-				Y = RandGauss::shoot( MeanY , SigmaYPrim) ;
-			}
-	
-		 else
-		 	{
-		 		X = MeanX								;
-		 		Y = RandGauss::shoot( MeanY , SigmaY)	;
-		 	}
-	
-	}
diff --git a/README b/README
index 2a19cddc07318972071e65ccfd9687464b50c508..a0cad80d2ede8ac15ab6d25d35f5e14b8aef0e64 100644
--- a/README
+++ b/README
@@ -62,7 +62,7 @@ IV) Inputs
 	Inputs / CrossSection
 	       / DetectorConstruction
 	       / EventGenerator
-	       / dEdx 
+	       / EnergyLoss
 
 V) Outputs
 	This directory contains the ROOT ouput files of the