/[PAMELA software]/tof/flight/ToFNuclei/src/ToFNuclei.cpp
ViewVC logotype

Annotation of /tof/flight/ToFNuclei/src/ToFNuclei.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.8 - (hide annotations) (download)
Fri Jan 17 15:12:38 2014 UTC (11 years ago) by mocchiut
Branch: MAIN
Changes since 1.7: +14 -12 lines
Compilation warnings using GCC4.7 fixed

1 pamelats 1.2 //*****************************************************
2     //24-feb-2009: introduced "beta_in" and "Set_Beta":
3     // beta_in is set to 100 by default. If it is not overwritten
4     // by "Set_Beta" (ToFNuclei.h), the code is used as before.
5     // If beta_in was set by the user using "Set_Beta", this beta
6     // is taken for the calculations.
7 pamelats 1.4 //
8 pamelats 1.3 //26-feb-2009: Inserted S115B calibrations from Lucia
9 pamelats 1.2 //
10 pamelats 1.4 //02-apr-2009: bug found in some "if" statements for the
11 pamelats 1.3 // "Layercharge" definition, but only important if ADC=4095
12 pamelats 1.4 //
13     //15-apr-2009: small bug found in the calculation of the PMT
14     // charge, the charge for the PMTs 1,9,28.. was calculated
15     // twice, but the final result was OK
16 pamelats 1.5 //
17     //05-may-2009: bug found in the calculation of the PMT
18     // charge for standalone ToF due to changes made for rev 1.4:
19     // For PMTs 4,8,39,41 (counting 0..47) no charge was calculated
20     // calibration arrays now including correct brackets to avoid
21     // compiler warnings
22 pamelats 1.6 //06-aug-2009: charge_layer_trk_raw and charge_layer_std_raw
23     // added: These are the "raw" values before doing the 2nd-order
24     // correction
25 pamelats 1.2 //*****************************************************
26 pamela 1.1 #include <ToFNuclei.h>
27    
28     //--------------------------------------
29     /**
30     * Default constructor
31     */
32     ToFNuclei::ToFNuclei(){
33     Clear();
34     };
35    
36     ToFNuclei::ToFNuclei(PamLevel2 *l2p){
37     //
38     Clear();
39     //
40     L2 = l2p;
41     //
42 pamelats 1.2 beta_in = 100.;
43     //
44 pamela 1.1 if ( !L2->IsORB() ) printf(" WARNING: OrbitalInfo Tree is needed, the plugin could not work properly without it \n");
45     //
46     OBT = 0;
47     PKT = 0;
48     atime = 0;
49     //
50     sntr = 0;
51     debug = false;
52     //
53     };
54    
55     void ToFNuclei::Clear(){
56     //
57 mocchiut 1.7 ncount_trk = 0;
58 pamela 1.1 charge_trk = 0.;
59     memset (charge_layer_trk,0,6*sizeof(Float_t)); //
60 pamelats 1.6 memset (charge_layer_trk_raw,0,6*sizeof(Float_t)); //
61 pamelats 1.2 memset (charge_PMT_trk,0,48*sizeof(Float_t)); //
62 pamela 1.1 memset (layerinfo_trk,0,6*sizeof(Int_t)); //
63 mocchiut 1.7 ncount_std = 0;
64 pamela 1.1 charge_std = 0.;
65     memset (charge_layer_std,0,6*sizeof(Float_t)); //
66 pamelats 1.6 memset (charge_layer_std_raw,0,6*sizeof(Float_t)); //
67 pamelats 1.2 memset (charge_PMT_std,0,48*sizeof(Float_t)); //
68 pamela 1.1 memset (layerinfo_std,0,6*sizeof(Int_t)); //
69     };
70    
71     void ToFNuclei::Print(){
72     //
73     Process();
74     //
75     printf("========================================================================\n");
76     printf(" OBT: %u PKT: %u ATIME: %u Track %i \n",OBT,PKT,atime,tr);
77     printf(" std : charge %f ncount %d layers %f %f %f %f %f %f \n",charge_std,ncount_std,charge_layer_std[0],charge_layer_std[1],charge_layer_std[2],charge_layer_std[3],charge_layer_std[4],charge_layer_std[5]);
78     printf(" std : layerinfo %d %d %d %d %d %d \n",layerinfo_std[0],layerinfo_std[1],layerinfo_std[2],layerinfo_std[3],layerinfo_std[4],layerinfo_std[5]);
79    
80     printf(" trk : charge %f ncount %d layers %f %f %f %f %f %f \n",charge_trk,ncount_trk,charge_layer_trk[0],charge_layer_trk[1],charge_layer_trk[2],charge_layer_trk[3],charge_layer_trk[4],charge_layer_trk[5]);
81     printf(" trk : layerinfo %d %d %d %d %d %d \n",layerinfo_trk[0],layerinfo_trk[1],layerinfo_trk[2],layerinfo_trk[3],layerinfo_trk[4],layerinfo_trk[5]);
82     printf("========================================================================\n");
83     //
84     };
85    
86     void ToFNuclei::Delete(){
87     Clear();
88     };
89    
90    
91     void ToFNuclei::Process(){
92     Process(0);
93     };
94    
95     void ToFNuclei::Process(Int_t ntr){
96     //
97     if ( !L2 ){
98     printf(" ERROR: cannot find PamLevel2 object, use the correct constructor or check your program!\n");
99     printf(" ERROR: CaloExample variables not filled \n");
100     return;
101     };
102     //
103     Bool_t newentry = false;
104     //
105     if ( L2->IsORB() ){
106     if ( L2->GetOrbitalInfo()->pkt_num != PKT || L2->GetOrbitalInfo()->OBT != OBT || L2->GetOrbitalInfo()->absTime != atime || ntr != sntr ){
107     newentry = true;
108     OBT = L2->GetOrbitalInfo()->OBT;
109     PKT = L2->GetOrbitalInfo()->pkt_num;
110     atime = L2->GetOrbitalInfo()->absTime;
111     sntr = ntr;
112     };
113     } else {
114     newentry = true;
115     };
116     //
117 pamelats 1.2 if ( !newentry ) {
118     return;
119     }
120 pamela 1.1 //
121     tr = ntr;
122     //
123     if ( debug ) printf(" Processing event at OBT %u PKT %u time %u \n",OBT,PKT,atime);
124     //
125     // charge_trk = 0.;
126     // memset (charge_layer_trk,0,6*sizeof(Float_t)); //
127     // charge_std = 0.;
128     // memset (charge_layer_std,0,6*sizeof(Float_t)); //
129    
130     Clear();
131    
132 pamelats 1.2 // cout<<"beta_in = "<<beta_in<<endl;
133    
134 pamela 1.1
135     Double_t time = L2->GetOrbitalInfo()->absTime;
136    
137     //=======================================================================
138     //============== Siegen version 1 ====================
139     //============== track dependent dEdx and beta ====================
140     //=======================================================================
141    
142     //if (L2->GetTrkLevel2()->GetNTracks()!=1) return;
143     if (L2->GetTrkLevel2()->GetNTracks()==1) {
144    
145 pamelats 1.2 /*
146 pamela 1.1 Float_t PMTsat[48] = {
147     3162.14, 3165.48, 3153.85, 3085.73, 3089.65, 3107.64, 3097.52, 3078.37, 3130.05, 3087.07, 3112.22,
148     3102.92, 3080.58, 3092.55, 3087.94, 3125.03, 3094.09, 3143.16,
149     3125.51, 3181.27, 3092.09, 3124.98, 3069.3, 3095.53, 3097.11, 3133.53, 3114.73, 3113.01, 3091.19,
150     3097.99, 3033.84, 3134.98, 3081.37, 3111.04, 3066.77, 3108.17,
151     3133, 3111.06, 3052.52, 3140.66, 3106.33, 3094.85, 3150.85, 3118.8, 3096.24, 3118.47,3111.36, 3117.11
152 pamelats 1.2 };
153     */
154    
155     // new values from Napoli dec 2008
156     Float_t PMTsat[48] = {
157     3176.35,3178.19,3167.38,3099.73,3117.00,3126.29,3111.44,3092.27,
158     3146.48,3094.41,3132.13,3115.37,3099.32,3110.97,3111.80,3143.14,
159     3106.72,3153.44,3136.00,3188.96,3104.73,3140.45,3073.18,3106.62,
160     3112.48,3146.92,3127.24,3136.52,3109.59,3112.89,3045.15,3147.26,
161     3095.92,3121.05,3083.25,3123.62,3150.92,3125.30,3067.60,3160.18,
162     3119.36,3108.92,3164.77,3133.64,3111.47,3131.98,3128.87,3135.56 };
163    
164     for (Int_t i=0; i<48;i++) PMTsat[i] = PMTsat[i] - 5.; // safety margin
165    
166 pamela 1.1
167 pamelats 1.2 Float_t C0t[48][9] = {
168 pamelats 1.5 {0, 1, 2, 3, 4, 5, 6, 8, 92},
169     {0, 1, 2, 3, 4, 5, 6, 8, 92},
170     {0, 1, 2, 3, 4, 5, 6, 8, 92},
171     {0, 1, 2, 3, 4, 5, 6, 8, 92},
172     {0, 1, 2, 3, 4, 5, 6, 8, 92},
173     {0, 1, 2, 3, 4, 5, 6, 8, 92},
174     {0, 1, 2, 3, 4, 5, 6, 8, 92},
175     {0, 1, 2, 3, 4, 5, 6, 8, 92},
176     {0, 1, 2, 3, 4, 5, 6, 8, 92},
177     {0, 1, 2, 3, 4, 5, 6, 8, 92},
178     {0, 1, 2, 3, 4, 5, 6, 8, 92},
179     {0, 1, 2, 3, 4, 5, 6, 8, 92},
180     {0, 1, 2, 3, 4, 5, 6, 8, 92},
181     {0, 1, 2, 3, 4, 5, 6, 8, 92},
182     {0, 1, 2, 3, 4, 5, 6, 8, 92},
183     {0, 1, 2, 3, 4, 5, 6, 8, 92},
184     {0, 1, 2, 3, 4, 5, 6, 8, 92},
185     {0, 1, 2, 3, 4, 5, 6, 8, 92},
186     {0, 1, 2, 3, 4, 5, 6, 8, 92},
187     {0, 1, 2, 3, 4, 5, 6, 8, 92},
188     {0, 1, 2, 3, 4, 5, 6, 8, 92},
189     {0, 1, 2, 3, 4, 5, 6, 8, 92},
190     {0, 1, 2, 3, 4, 5, 6, 8, 92},
191     {0, 1, 2, 3, 4, 5, 6, 8, 92},
192     {0, 1, 2, 3, 4, 5, 6, 8, 92},
193     {0, 1, 2, 3, 4, 5, 6, 8, 92},
194     {0, 1, 2, 3, 4, 5, 6, 8, 92},
195     {0, 1, 2, 3, 4, 5, 6, 8, 92},
196     {0, 1, 2, 3, 4, 5, 6, 8, 92},
197     {0, 1, 2, 3, 4, 5, 6, 8, 92},
198     {0, 1, 2, 3, 4, 5, 6, 8, 92},
199     {0, 1, 2, 3, 4, 5, 6, 8, 92},
200     {0, 1, 2, 3, 4, 5, 6, 8, 92},
201     {0, 1, 2, 3, 4, 5, 6, 8, 92},
202     {0, 1, 2, 3, 4, 5, 6, 8, 92},
203     {0, 1, 2, 3, 4, 5, 6, 8, 92},
204     {0, 1, 2, 3, 4, 5, 6, 8, 92},
205     {0, 1, 2, 3, 4, 5, 6, 8, 92},
206     {0, 1, 2, 3, 4, 5, 6, 8, 92},
207     {0, 1, 2, 3, 4, 5, 6, 8, 92},
208     {0, 1, 2, 3, 4, 5, 6, 8, 92},
209     {0, 1, 2, 3, 4, 5, 6, 8, 92},
210     {0, 1, 2, 3, 4, 5, 6, 8, 92},
211     {0, 1, 2, 3, 4, 5, 6, 8, 92},
212     {0, 1, 2, 3, 4, 5, 6, 8, 92},
213     {0, 1, 2, 3, 4, 5, 6, 8, 92},
214     {0, 1, 2, 3, 4, 5, 6, 8, 92},
215     {0, 1, 2, 3, 4, 5, 6, 8, 92} } ;
216    
217 pamela 1.1
218    
219     Float_t A0t[48][9] = {
220 pamelats 1.5 {0, 0.90472, 5.19581, 7.99982, 11, 13, 16, 18, 2000},
221     {0, 0.7774, 5.15121, 7.99976, 11, 13, 16, 18, 2000},
222     {0, 1.18414, 5.1952, 8, 11, 13, 16, 17.9999, 2000},
223     {0, 1.0189, 5.61869, 8, 11, 13.0006, 15.9998, 18.0014, 2000},
224     {0, 1.08725, 4.4728, 7.99979, 11, 13.0002, 16, 18, 2000},
225     {0, 0.946462, 4.69554, 7.99994, 11, 13.0001, 16, 18, 2000},
226     {0, 1.13176, 4.57483, 7.99999, 11, 13.0002, 15.9999, 18.0002, 2000},
227     {0, 1.00872, 4.99316, 8, 11, 13, 16, 18, 2000},
228     {0, 1.19891, 5.01355, 8, 11, 13.0003, 16, 18, 2000},
229     {0, 0.5, 2.284, 3.12, 8.795, 6.257, 7.841, 6.1743, 2000},
230     {0, 1.16961, 4.59028, 8, 11, 13.0001, 16, 18, 2000},
231     {0, 0.989643, 5.21958, 7.99998, 11, 13, 16, 17.9999, 2000},
232     {0, 0.952029, 5.19598, 7.99998, 11, 13.0005, 16.0005, 18, 2000},
233     {0, 0.736833, 4.95596, 8, 11, 13, 16, 18, 2000},
234     {0, 1.34007, 3.74275, 8, 11, 13, 16, 18, 2000},
235     {0, 1.47101, 4.31154, 8, 11, 13, 16, 18, 2000},
236     {0, 1.3754, 4.83141, 8.00002, 11, 13, 16, 18, 2000},
237     {0, 1.47712, 5.79783, 8, 11, 13, 16, 18, 2000},
238     {0, 1.19127, 5.35796, 7.99996, 11, 13, 16, 18, 2000},
239     {0, 1.25745, 5.98391, 8, 11, 13.0004, 16.0001, 18.0001, 2000},
240     {0, 1.18024, 5.40107, 7.99999, 11, 13, 16, 18.0001, 2000},
241     {0, 0.961883, 5.10846, 7.99999, 11, 13, 16, 18, 2000},
242     {0, 1.23192, 6.21098, 8, 11, 13.0005, 16, 18.0003, 2000},
243     {0, 1.15846, 5.23573, 7.99995, 11, 13, 16, 18.0002, 2000},
244     {0, 1.26163, 5.5425, 8.00001, 11, 13.0002, 16.0006, 18, 2000},
245     {0, 1.12754, 5.57064, 7.99999, 11, 13, 16, 18.0002, 2000},
246     {0, 1.22768, 6.06283, 8, 11, 13.0002, 16, 18, 2000},
247     {0, 1.83569, 5.87584, 8.00006, 11, 13.0005, 16, 18, 2000},
248     {0, 1.61434, 5.56634, 7, 7.99999, 8.99999, 14.999, 16, 2000},
249     {0, 1.61287, 5.46416, 7.99989, 10, 12, 14.9997, 16, 2000},
250     {0, 1.49053, 6.21581, 9.00001, 12, 14, 16, 22, 2000},
251     {0, 1.64579, 5.08498, 7.99989, 10, 12, 15, 16, 2000},
252     {0, 1.83474, 6.29746, 9.00001, 12, 14.0001, 16.0001, 22, 2000},
253     {0, 1.80066, 6.19725, 9, 12, 14, 16, 22, 2000},
254     {0, 1.9025, 5.83736, 8, 10, 12, 14.9999, 16, 2000},
255     {0, 1.90163, 5.62801, 7.99999, 10, 12, 15, 16, 2000},
256     {0, 2.5518, 5.97325, 9.00012, 12, 15, 18, 22, 2000},
257     {0, 2.53476, 5.75312, 9.00007, 12, 15, 18, 22, 2000},
258     {0, 2.67784, 6.9232, 9.00005, 12, 15, 18, 22, 2000},
259     {0, 2.62769, 7.22552, 9.00003, 12.0001, 15, 18, 22, 2000},
260     {0, 2.58088, 6.30413, 9.0001, 12, 15, 18, 22, 2000},
261     {0, 2.48219, 7.06085, 9.00005, 12, 15, 18, 22, 2000},
262     {0, 3.23157, 5.20668, 9.00007, 12, 15, 18, 22, 2000},
263     {0, 3.38244, 6.45172, 9.00006, 12.0001, 15, 18.0001, 22, 2000},
264     {0, 3.14595, 5.29036, 9.00008, 12, 15, 18, 22.0001, 2000},
265     {0, 3.34692, 6.17283, 9.00041, 12, 15, 18.0001, 22, 2000},
266     {0, 3.16915, 4.25973, 9.00015, 12, 15, 18, 22, 2000},
267     {0, 3.25809, 5.58971, 9.00068, 12, 15, 18, 22.0001, 2000} } ;
268 pamelats 1.2
269 pamela 1.1
270     Float_t A1t[48][9] = {
271 pamelats 1.5 {0, -0.148721, -3.39495, -4.31459, -0.929148, 3.54132, -0.781274, 1.31968, 0},
272     {0, 0.300986, -2.80331, -4.23227, 0.298916, 4.10416, -5.18516, 7.03041, 0},
273     {0, -0.590177, -3.12529, -0.44614, 0.620419, 5.19609, 9.88925, 14.9819, 0},
274     {0, -0.173358, -3.98938, -0.616916, 0.405404, 6.25045, 10.5087, 24.7055, 0},
275     {0, -0.32707, -1.1686, -3.46701, -0.284242, 4.09514, -0.561233, -0.166844, 0},
276     {0, 0.0440221, -1.5147, -2.67239, -1.08848, 5.05632, 3.92546, -0.0525454, 0},
277     {0, -0.331836, -1.25371, -1.59317, 0.654738, 4.41673, 5.99879, 14.9057, 0},
278     {0, 0.00587183, -2.17841, -1.48496, 0.477997, 6.24062, 6.19841, 11.4798, 0},
279     {0, -0.515989, -2.1195, -1.44376, 0.145546, 5.41926, 5.03587, 10.7126, 0},
280     {0, 0, 0.0682, 3.2814, -6.1989, 8.05589, 9.75967, 23.797, 0},
281     {0, -0.554732, -1.6306, -1.54677, 0.687092, 3.97612, 4.05449, 3.44324, 0},
282     {0, -0.0314164, -2.83515, -1.29946, 2.31597, 7.15645, 6.95353, 12.8573, 0},
283     {0, -0.218413, -3.04095, -1.50327, 0.291698, 5.27119, 9.06051, 18.4417, 0},
284     {0, 0.410005, -2.45452, -0.851601, 0.206665, 6.44906, 7.53132, 10.5636, 0},
285     {0, -1.29063, 0.463767, -0.720394, 1.27269, 3.66394, 4.52102, 7.33444, 0},
286     {0, -1.54073, -1.60146, -1.91721, -0.640132, 3.58881, 0.561348, 7.33444, 0},
287     {0, -0.558527, -2.43481, -1.64492, 1.51694, 6.05449, 4.67951, 5.40004, 0},
288     {0, -1.44736, -5.265, -1.28878, -0.238869, 4.13668, 4.58264, 3.28758, 0},
289     {0, -0.596315, -3.35555, -2.03624, -0.148223, 6.16332, 4.71164, 15.6531, 0},
290     {0, -0.740826, -4.79843, 0.345734, -0.210722, 6.32702, 9.76698, 19.9151, 0},
291     {0, -0.541817, -3.30557, -1.76057, -0.216039, 5.79923, 8.00931, 16.4061, 0},
292     {0, -0.0503124, -2.66635, -1.70196, -1.07446, 3.46058, 1.45824, -2.21932, 0},
293     {0, -0.495955, -5.78012, -0.174017, 0.675206, 6.30264, 8.30058, 20.3899, 0},
294     {0, -0.315843, -2.8796, -3.04323, -0.681945, 5.49248, 7.42757, 17.1667, 0},
295     {0, -0.643179, -3.5364, -0.245549, 0.694213, 5.79727, 10.2911, 9.61651, 0},
296     {0, -0.315433, -3.56856, -1.25894, 2.05501, 6.85829, 8.74895, 14.9955, 0},
297     {0, -0.478207, -4.82517, 0.688668, 1.40183, 6.78743, 8.02806, 2.65821, 0},
298     {0, -1.63072, -5.05269, -0.582789, 1.22014, 6.80023, 8.8931, 5.15517, 0},
299     {0, -1.50826, -3.68958, 0.420744, 3.25124, 4.28046, -16.9712, -12, 0},
300     {0, -1.52021, -3.37459, -2.41086, 0.547517, -0.56013, -8.59935, -3, 0},
301     {0, -0.998702, -4.7187, -2.33974, -0.0974348, 3.10138, 2.3293, -5.71135, 0},
302     {0, -1.66188, -2.39145, -2.55052, 0.29005, -0.16697, -3.97018, -1.5, 0},
303     {0, -2.04431, -4.95214, -1.51889, 1.92081, 5.92476, 8.94417, -0.172422, 0},
304     {0, -1.94155, -4.95644, -2.47063, 0.0233995, 2.57015, 4.84173, -0.555407, 0},
305     {0, -2.22045, -4.21875, -1.23892, 0.911188, -0.705415, -11.5648, -7, 0},
306     {0, -2.25418, -3.71067, -1.87307, 0.560423, 0.206679, -4.27293, -3, 0},
307     {0, -3.90179, -5.14354, -4.08454, -3.13545, -3.57868, -5.13198, -1.0019, 0},
308     {0, -3.78789, -4.50313, -5.24307, -3.24931, -0.319336, -1.407, -3.77821, 0},
309     {0, -4.16337, -7.12861, -2.29639, -0.786276, 2.58494, 4.16162, 7.22747, 0},
310     {0, -4.04189, -7.82707, -1.34893, -1.05519, 4.33166, 4.87264, 12.3328, 0},
311     {0, -3.85946, -5.71064, -4.43564, -1.53025, 1.42505, -0.0695653, 4.33418, 0},
312     {0, -3.65794, -8.19828, -3.32738, -1.25785, -1.13124, -6.79745, -8.37113, 0},
313     {0, -5.571, -2.49596, -2.8623, -2.74219, -1.43215, -0.359863, 0.25062, 0},
314     {0, -6.00932, -5.60393, -2.33967, -1.53792, 3.67721, 5.49137, 8.34507, 0},
315     {0, -5.36442, -3.19657, -2.9975, -1.73078, 0.0558693, -0.179221, 9.45231, 0},
316     {0, -5.91858, -5.04606, -2.88549, -0.953526, 1.17816, 5.43427, 0.871257, 0},
317     {0, -5.53832, -0.498886, -3.85789, -2.61557, -2.45863, -1.44554, -7.21927, 0},
318     {0, -5.70059, -3.94476, -3.23927, 0.15573, 1.85295, 3.96162, 8.70362, 0} };
319 pamelats 1.2
320 pamela 1.1
321     Float_t A2t[48][9] = {
322 pamelats 1.5 {0, 0.447567, 2.19777, 4.56362, 2.7416, 2.05411, 10.11, 19.0312, 0},
323     {0, 0.11417, 1.62292, 5.00684, 3, 3.00006, 17.3401, 17.8502, 0},
324     {0, 0.613665, 1.84729, 0.717669, 3, 2.53701, 1.23897, 10.2529, 0},
325     {0, 0.318447, 2.30647, 0.936633, 3, 3, 2.95973, 3, 0},
326     {0, 0.398201, 0.701095, 3.91236, 3, 3, 11.5693, 17.9749, 0},
327     {0, 0.202853, 0.806934, 3.11779, 3.57657, 1.59933, 6.71492, 23.6721, 0},
328     {0, 0.378081, 0.60131, 1.91722, 1.97014, 3, 5.08036, 9.64776, 0},
329     {0, 0.185602, 1.13243, 1.95726, 2.25608, 1.31382, 6.06097, 15.9104, 0},
330     {0, 0.519026, 1.16139, 1.92471, 3, 3, 6.24901, 15.0465, 0},
331     {0, 0, 0, -1.972, 4.7828, -3.1154, -2.11319, -4.7497, 0},
332     {0, 0.584808, 1.01299, 1.55521, 1.3038, 3, 7.23646, 20.977, 0},
333     {0, 0.252569, 1.60163, 1.83587, 0.630466, 0.777058, 6.0142, 15.4738, 0},
334     {0, 0.434331, 1.84922, 1.83168, 3, 3, 3, 6.44375, 0},
335     {0, 0.0330463, 1.50249, 1.15961, 3, 0.810556, 4.20175, 16.0172, 0},
336     {0, 1.15272, -0.461141, 0.6358, 0.566375, 3.20343, 5.26698, 14.6336, 0},
337     {0, 1.24677, 1.12736, 1.76074, 3, 3.77723, 10.7814, 14.6336, 0},
338     {0, 0.551726, 1.59633, 1.18411, 0.119382, 0.843864, 6.67491, 20.4289, 0},
339     {0, 1.17008, 3.53223, 1.7298, 3, 3.51043, 7.10543, 22.3253, 0},
340     {0, 0.612142, 1.96606, 2.64693, 3.25016, 1.25888, 7.04821, 11.7283, 0},
341     {0, 0.69148, 2.84536, 0.249509, 4.29848, 3, 3.58229, 9.01681, 0},
342     {0, 0.565678, 1.96366, 2.32387, 3.15843, 1.66386, 3.07223, 7.67847, 0},
343     {0, 0.286252, 1.61749, 2.08437, 3.96745, 3.46972, 9.29207, 23.9444, 0},
344     {0, 0.427677, 3.58328, 0.303785, 3, 3, 4.66547, 6.77271, 0},
345     {0, 0.367136, 1.62323, 3.53394, 3.22174, 1.19152, 2.67962, 7.37085, 0},
346     {0, 0.571177, 2.03267, 0.714761, 2.31548, 3, 3, 23.2035, 0},
347     {0, 0.410871, 2.02075, 2.01824, 1.2684, 1.18522, 3.21976, 12.8378, 0},
348     {0, 0.463877, 2.86112, 0.170916, 3, 3, 5.97413, 28.4085, 0},
349     {0, 1.30088, 3.26557, 2, 3, 3, 4.77584, 22.8794, 0},
350     {0, 1.02941, 2.12558, 0.872765, 2.23727, 4.7981, 24.6338, 24.6338, 0},
351     {0, 1.05783, 1.89525, 2.85289, 3.0898, 7.83407, 17.8466, 20, 0},
352     {0, 0.87851, 2.49044, 1.91387, 2.41541, 3.8418, 9.41288, 24.0375, 0},
353     {0, 1.18188, 1.273, 2.9275, 3.06704, 7.12642, 12.7629, 15, 0},
354     {0, 1.53682, 2.57011, 1.06205, 0.506326, 1.68314, 3.58498, 23.1595, 0},
355     {0, 1.46302, 2.68515, 1.99381, 2.17816, 4.41356, 6.53634, 20.7136, 0},
356     {0, 1.4731, 2.3654, 1.53025, 2.96327, 8.70277, 21.6253, 25, 0},
357     {0, 1.53808, 2.07089, 2.22662, 3.14766, 7.57131, 14.2471, 20, 0},
358     {0, 2.54185, 2.94079, 2.66362, 3.52374, 6.80629, 11.3325, 14.5186, 0},
359     {0, 2.43664, 2.49436, 4.17446, 3.77162, 3.31898, 7.43896, 18.2548, 0},
360     {0, 2.66465, 3.9858, 1.0855, 1.91916, 1.82719, 3.62289, 11.3872, 0},
361     {0, 2.59071, 4.39003, 0.0757547, 3, 0.158868, 3.55454, 5.71387, 0},
362     {0, 2.48014, 3.16071, 3.1975, 1.7259, 1.53532, 6.33812, 11.2325, 0},
363     {0, 2.35236, 4.94998, 1.78836, 1.9115, 4.74233, 13.6973, 21.965, 0},
364     {0, 3.52215, 0.812087, 1.1768, 2.95239, 4.3202, 6.04614, 13.6556, 0},
365     {0, 3.79446, 2.80606, 0.88371, 3, 0.614106, 2.52782, 12.4441, 0},
366     {0, 3.41363, 1.57296, 1.59021, 2.47593, 3.41146, 6.76304, 5.59471, 0},
367     {0, 3.72529, 2.50889, 2, 3, 4.06815, 2.78676, 19.6427, 0},
368     {0, 3.54713, -0.296079, 2.10851, 2.42037, 5.37573, 6.78065, 22.298, 0},
369     {0, 3.61517, 1.96909, 2, 0.249865, 2.46639, 3.42483, 8.1652, 0} } ;
370 pamelats 1.2
371 pamela 1.1
372     // S115B failure: 1158700000 // 2006-09-19 21:06:40 UTC
373    
374 pamelats 1.2 if (time < 1158700000.) { // first workaround: just use calibration of PMT S115A
375 pamela 1.1 for ( Int_t jj=0; jj<9; jj++ ){
376     A0t[9][jj] = A0t[8][jj] ;
377     A1t[9][jj] = A1t[8][jj] ;
378     A2t[9][jj] = A2t[8][jj] ;
379     }
380     } // if time...
381    
382     //============================================================================
383    
384     // 2nd-order correction
385 pamelats 1.5 Float_t corr_a[6][4] = {
386     {0.977261, 0.353729, -0.83314, 0.452883},
387     {1.27649, 3.53459, -5.41948, 2.67854},
388     {2.21926, 4.32797, -7.24001, 3.77247},
389     {2.4202, 7.99552,-12.4371, 6.08982},
390     {2.04984, 13.3375, -19.178, 8.86101},
391     {2.63322, 14.8072, -20.911,9.57905} };
392 pamela 1.1
393     //---------------------------------------------------------------------
394    
395     Float_t xv[6],yv[6];
396     Int_t iz;
397     Float_t x1[9],y1[9];
398     Int_t n1 = 9;
399 pamelats 1.2
400     Float_t Layercharge[6] = {1005., 1005., 1005., 1005., 1005., 1005. };
401 pamela 1.1
402     Int_t Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
403    
404 mocchiut 1.8 //Float_t adc[48],adc_c[48],PMTcharge_arr[48];
405     Float_t adc[48],PMTcharge_arr[48];
406 pamelats 1.2
407 pamela 1.1 //------------------------------------------------------------------
408    
409     PamTrack *track = L2->GetTrack(0);
410    
411     Float_t beta_mean = fabs(track->GetToFTrack()->beta[12]);
412 pamelats 1.2
413     // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in
414     if (beta_in != 100.) beta_mean=beta_in;
415    
416 mocchiut 1.7 //Float_t def = track->GetTrkTrack()->al[4];
417     //Float_t rig = 1./def;
418 pamela 1.1
419     Int_t ncount=0;
420     Float_t charge_chi=1000.;
421    
422     //-------------------------------------------------------------
423     //------------------ ToF Charge ------------------------------
424     //-------------------------------------------------------------
425    
426     // fill adc and tdc
427    
428     Int_t ich,jj,kk;
429    
430     for (ich=0; ich<48; ich++) adc[ich] = 4095.;
431 mocchiut 1.8 // for (ich=0; ich<48; ich++) adc_c[ich] = 1000.;
432 pamela 1.1 for (ich=0; ich<48; ich++) PMTcharge_arr[ich] = 1000.;
433    
434 pamelats 1.2
435    
436     if ((beta_mean < 0.05) || (beta_mean > 2.0)) {
437     for (Int_t jj=0; jj<48;jj++) charge_PMT_trk[jj] = 1001.;
438     for (Int_t jj=0; jj<6;jj++) charge_layer_trk[jj] = 1001.;
439 pamelats 1.6 for (Int_t jj=0; jj<6;jj++) charge_layer_trk_raw[jj] = 1001.;
440 mocchiut 1.7 for (Int_t jj=0; jj<6;jj++) layerinfo_trk[jj] = 1001;
441 pamelats 1.2 charge_trk = 1001.;
442     ncount_trk = 0;
443     }
444    
445    
446     if ((beta_mean > 0.05) && (beta_mean < 2.0)) {
447    
448 pamela 1.1 Float_t betahelp = pow(beta_mean, 1.2);
449    
450     //=======================================================================
451    
452     for (Int_t ipmt=0; ipmt<L2->GetToFLevel2()->npmt() ; ipmt++){
453     ToFPMT *tofpmt = L2->GetToFLevel2()->GetToFPMT(ipmt);
454     Int_t pmt_id = tofpmt->pmt_id;
455     adc[pmt_id] = tofpmt->adc ;
456     }
457    
458     //=======================================================================
459     Float_t yl, yh, ym, m, b, chelp, charge;
460    
461     for (Int_t ipmt=0; ipmt<track->GetToFTrack()->npmtadc; ipmt++){
462     Float_t dEdx = track->GetToFTrack()->dedx[ipmt];
463     ym = dEdx*betahelp;
464     Int_t pmtadc = track->GetToFTrack()->pmtadc[ipmt];
465 mocchiut 1.8 // Int_t adcflag = track->GetToFTrack()->adcflag[ipmt];
466 pamela 1.1 L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);
467 mocchiut 1.8 // if (adcflag==0) adc_c[pmtadc] = dEdx;
468 pamela 1.1
469    
470 mocchiut 1.8 // if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;
471 pamelats 1.2 if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;
472    
473 mocchiut 1.8 // if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;
474 pamela 1.1
475     if (adc[pmtadc] < PMTsat[pmtadc]) {
476     //----------------------------------------------------------------------------------------
477 pamelats 1.4 if ((pmtadc!=1) && (pmtadc!=9) && (pmtadc!=28) && (pmtadc!=29) && (pmtadc!=34)) {
478 pamela 1.1
479     for ( Int_t jj=0; jj<9; jj++ ){
480     x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean;
481     y1[jj] = C0t[pmtadc][jj]*C0t[pmtadc][jj] ;
482     }
483    
484     TGraph *gr2 = new TGraph(n1,x1,y1);
485     TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline
486     chelp = spl2->Eval(ym);
487 pamelats 1.3 if (chelp<0.) chelp=0.0001; //WM new
488 pamela 1.1 charge = TMath::Sqrt(chelp);
489     gr2->Delete();
490     spl2->Delete();
491     PMTcharge_arr[pmtadc] = charge;
492     } // pmtadc != ...
493 pamelats 1.2
494 pamela 1.1 //----------------------------------------------------------------------------------------
495 pamelats 1.2
496 pamela 1.1 if ((pmtadc==1) || (pmtadc==9) || (pmtadc==28) || (pmtadc==29) || (pmtadc==34)) {
497     for ( Int_t jj=0; jj<8; jj++ ){
498     yl = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean;
499     yh = A0t[pmtadc][jj+1]+A1t[pmtadc][jj+1]*beta_mean+A2t[pmtadc][jj+1]*beta_mean*beta_mean;
500     if ((yl<ym)&&(ym<yh)){
501     m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl);
502     b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl;
503     chelp = m*ym + b;
504 pamelats 1.3 if (chelp<0.) chelp=0.0001; //WM new
505 pamela 1.1 charge= TMath::Sqrt(chelp);
506     PMTcharge_arr[pmtadc] = charge;
507     }
508     } // jj=0..8
509     } // if pmtadc ==....
510     //----------------------------------------------------------------------------------------
511     } // adc < sat
512 pamelats 1.2
513 pamela 1.1 } // ipmt...
514    
515     //====================================================================
516     //================ Find out the hitted ToF paddles ===============
517     //====================================================================
518    
519     for (Int_t jj=0; jj<6; jj++){
520     xv[jj]=track->GetToFTrack()->xtr_tof[jj];
521     yv[jj]=track->GetToFTrack()->ytr_tof[jj];
522     }
523    
524     Int_t PaddleIdOfTrack[6];
525    
526     PaddleIdOfTrack[0] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[0], yv[0], 0, 0.) ;
527     PaddleIdOfTrack[1] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[1], yv[1], 1, 0.) ;
528     PaddleIdOfTrack[2] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[2], yv[2], 2, 0.) ;
529     PaddleIdOfTrack[3] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[3], yv[3], 3, 0.) ;
530     PaddleIdOfTrack[4] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[4], yv[4], 4, 0.) ;
531     PaddleIdOfTrack[5] = L2->GetToFLevel2()->GetPaddleIdOfTrack(xv[5], yv[5], 5, 0.) ;
532    
533     //==============================================================
534    
535    
536     Int_t ihelp_a[6] = {0,16,28,32,36,42};
537    
538     for (Int_t ilay=0; ilay<6; ilay ++) {
539     Int_t jj = PaddleIdOfTrack[ilay] ;
540 pamelats 1.2 //Float_t xhelp = 1000.;
541     Float_t xhelp = 1005.;
542 pamela 1.1
543     if (jj == -1) Layerinfo[ilay] = -1;
544    
545     if (jj != -1) {
546     Int_t ih = ihelp_a[ilay] + 2*jj;
547 pamelats 1.3
548     // New WM
549     Int_t igood1=0;
550     Int_t igood2=0;
551     if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih] > 0.)) igood1=1;
552     if ((PMTcharge_arr[ih+1] < 1000.) && (PMTcharge_arr[ih+1] > 0.)) igood2=1;
553    
554     if ((PMTcharge_arr[ih]==0.) && (PMTcharge_arr[ih+1]==0.)) xhelp = 0.;
555     if ((igood1==1)&&(igood2==1)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ;
556     if ((igood1==1)&&(igood2==0)) xhelp = PMTcharge_arr[ih];
557     if ((igood2==1)&&(igood1==0)) xhelp = PMTcharge_arr[ih+1];
558    
559    
560     /*
561 pamela 1.1 if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ;
562     if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ;
563     if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ;
564 pamelats 1.3 */
565 pamela 1.1 if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1;
566     if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1;
567     if ((adc[ih] > PMTsat[ih]) && (adc[ih] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10;
568     if ((adc[ih+1] > PMTsat[ih+1]) && (adc[ih+1] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10;
569     }
570     Layercharge[ilay] = xhelp;
571     } // ilay ...
572    
573    
574    
575     //==========================================================================
576 pamelats 1.6 //============= Layercharge without 2nd-order correction =================
577     //==========================================================================
578    
579     for (Int_t jj=0; jj<6;jj++) charge_layer_trk_raw[jj] = Layercharge[jj];
580    
581     //==========================================================================
582 pamela 1.1 //========================= 2nd-order correction =======================
583     //==========================================================================
584    
585     Float_t xb = beta_mean;
586    
587     for (Int_t ii=0; ii<6; ii++) {
588     Int_t ic = 0;
589     Float_t corr[4] = {1., 0., 0., 0.};
590     for (Int_t iii=1; iii<9; iii++) if (fabs(Layercharge[ii] - iii)<0.50) ic = iii;
591     if ((ic>0)&&(ic<=5)) for (Int_t iii=0; iii<4; iii++) corr[iii] = corr_a[ic-1][iii];
592     if (ic >5) for (Int_t iii=0; iii<4; iii++) corr[iii] = corr_a[5][iii];
593    
594     Float_t c_corr = corr[0]+corr[1]*xb+corr[2]*xb*xb+corr[3]*xb*xb*xb;
595    
596     if ((ic>0)&&(ic<=5)) c_corr = c_corr/(1.*ic) ;
597     if (ic>5) c_corr = c_corr/6. ;
598    
599 pamelats 1.6 //cout<<"beta "<<xb<<" layer "<<ii<<" ic "<<ic<<" => "<<c_corr<<endl;
600     //cout<<xb<<" "<<ic<<" "<<c_corr<<endl;
601    
602 pamela 1.1 Layercharge[ii] = Layercharge[ii]/c_corr;
603    
604     }
605    
606     //==========================================================================
607     //==========================================================================
608    
609 pamelats 1.2
610 pamela 1.1 Int_t icount=0;
611     Float_t charge_mean = 0.;
612     for (Int_t ii=0; ii<6; ii++) {
613     if (Layercharge[ii] < 1000) charge_mean = charge_mean + Layercharge[ii] ;
614     if (Layercharge[ii] < 1000) icount++;
615     }
616     if (icount>0) charge_mean = charge_mean/(1.*icount) ;
617    
618     if (icount>0) {
619    
620     //for (Int_t ii=0; ii<6; ii++) cout<<Layercharge[ii]<<" ";
621     //cout<<endl;
622    
623    
624     vector<float> charge_v;
625     Float_t charge_median = 0.;
626    
627     //////// get the median charge ////////////
628     for(Int_t ii=0;ii<6;ii++) {
629     if (Layercharge[ii] < 1000) charge_v.push_back(Layercharge[ii]);
630     }
631    
632     std::sort(charge_v.begin(),charge_v.end());
633     charge_median = charge_v[(int)(charge_v.size()/2+charge_v.size()%2)-1];
634    
635     //cout<<charge_mean<<" "<<charge_median<<endl;
636    
637     charge_mean = charge_median;
638    
639     } // icount>0
640    
641    
642     //--- Calculate charge for the second time, use residuals of the single
643     //--- measurements to get a chi2 value
644    
645     Float_t w_i_arr[8] = {0.1, 0.15, 0.2, 0.25, 0.30, 0.35, 0.45, 0.50};
646    
647     icount=0;
648     Float_t sw=0.;
649     Float_t sxw=0.;
650     Float_t w_i = 1./0.5;
651     Float_t resmax= 3.0;
652    
653     iz=1;
654     if ((0.0<charge_mean) & (charge_mean<1.5)) iz=1;
655     if ((1.5<charge_mean) & (charge_mean<2.5)) iz=2;
656     if ((2.5<charge_mean) & (charge_mean<3.5)) iz=3;
657     if ((3.5<charge_mean) & (charge_mean<4.5)) iz=4;
658     if ((4.5<charge_mean) & (charge_mean<5.5)) iz=5;
659     if ((5.5<charge_mean) & (charge_mean<6.5)) iz=6;
660     if ((6.5<charge_mean) & (charge_mean<7.5)) iz=7;
661     if ((7.5<charge_mean) & (charge_mean<90.)) iz=8;
662    
663     w_i = 1./w_i_arr[iz-1];
664    
665     for (Int_t jj=0; jj<6;jj++){
666     if (Layercharge[jj] < 1000) {
667     Float_t res = charge_mean - Layercharge[jj] ;
668     if (fabs(res*w_i)<resmax) {
669     icount= icount+1;
670     sxw=sxw + Layercharge[jj]*w_i*w_i ;
671     sw =sw + w_i*w_i ;
672     }
673     }
674     }
675    
676    
677     ncount = icount;
678     if (icount>0) charge_chi=sxw/sw;
679    
680     // cout<<" => "<<icount<<" "<<charge_chi<<endl;
681    
682     //=============================================================
683 pamelats 1.2 // changed 30-01-2009 WM
684 pamela 1.1
685 pamelats 1.2 for (Int_t jj=0; jj<48;jj++) charge_PMT_trk[jj] = PMTcharge_arr[jj];
686 pamela 1.1 for (Int_t jj=0; jj<6;jj++) charge_layer_trk[jj] = Layercharge[jj];
687     for (Int_t jj=0; jj<6;jj++) layerinfo_trk[jj] = Layerinfo[jj];
688     charge_trk = charge_chi;
689     ncount_trk = ncount;
690    
691 pamelats 1.2 } // 0.05 < beta < 2.0
692    
693 pamela 1.1 } // if ntrk == 1
694    
695     //================================================================
696     //============== Siegen version 1 =============
697     //============== standalone dEdx and beta =============
698     //================================================================
699    
700     // ToF track
701     ToFTrkVar *track = L2->GetToFStoredTrack(-1);
702     // if(!track)return;
703     if(track) {
704    
705 pamelats 1.2 /*
706 pamela 1.1 Float_t PMTsat[48] = {
707     3162.14, 3165.48, 3153.85, 3085.73, 3089.65, 3107.64, 3097.52, 3078.37, 3130.05, 3087.07, 3112.22,
708     3102.92, 3080.58, 3092.55, 3087.94, 3125.03, 3094.09, 3143.16,
709     3125.51, 3181.27, 3092.09, 3124.98, 3069.3, 3095.53, 3097.11, 3133.53, 3114.73, 3113.01, 3091.19,
710     3097.99, 3033.84, 3134.98, 3081.37, 3111.04, 3066.77, 3108.17,
711     3133, 3111.06, 3052.52, 3140.66, 3106.33, 3094.85, 3150.85, 3118.8, 3096.24, 3118.47,3111.36, 3117.11
712     };
713 pamelats 1.2 */
714    
715     // new values from Napoli dec 2008
716     Float_t PMTsat[48] = {
717     3176.35,3178.19,3167.38,3099.73,3117.00,3126.29,3111.44,3092.27,
718     3146.48,3094.41,3132.13,3115.37,3099.32,3110.97,3111.80,3143.14,
719     3106.72,3153.44,3136.00,3188.96,3104.73,3140.45,3073.18,3106.62,
720     3112.48,3146.92,3127.24,3136.52,3109.59,3112.89,3045.15,3147.26,
721     3095.92,3121.05,3083.25,3123.62,3150.92,3125.30,3067.60,3160.18,
722     3119.36,3108.92,3164.77,3133.64,3111.47,3131.98,3128.87,3135.56 };
723    
724     for (Int_t i=0; i<48;i++) PMTsat[i] = PMTsat[i] - 5.; // safety margin
725    
726 pamelats 1.5 // calibration file "charge_fits_new_std_2.dat"
727 pamela 1.1
728     Float_t C0t[48][9] = {
729 pamelats 1.5 {0, 1, 2, 3, 4, 5, 6, 8, 92},
730     {0, 1, 2, 3, 4, 5, 6, 8, 92},
731     {0, 1, 2, 3, 4, 5, 6, 8, 92},
732     {0, 1, 2, 3, 4, 5, 6, 8, 92},
733     {0, 1, 2, 3, 4, 5, 6, 8, 92},
734     {0, 1, 2, 3, 4, 5, 6, 8, 92},
735     {0, 1, 2, 3, 4, 5, 6, 8, 92},
736     {0, 1, 2, 3, 4, 5, 6, 8, 92},
737     {0, 1, 2, 3, 4, 5, 6, 8, 92},
738     {0, 1, 2, 3, 4, 5, 6, 8, 92},
739     {0, 1, 2, 3, 4, 5, 6, 8, 92},
740     {0, 1, 2, 3, 4, 5, 6, 8, 92},
741     {0, 1, 2, 3, 4, 5, 6, 8, 92},
742     {0, 1, 2, 3, 4, 5, 6, 8, 92},
743     {0, 1, 2, 3, 4, 5, 6, 8, 92},
744     {0, 1, 2, 3, 4, 5, 6, 8, 92},
745     {0, 1, 2, 3, 4, 5, 6, 8, 92},
746     {0, 1, 2, 3, 4, 5, 6, 8, 92},
747     {0, 1, 2, 3, 4, 5, 6, 8, 92},
748     {0, 1, 2, 3, 4, 5, 6, 8, 92},
749     {0, 1, 2, 3, 4, 5, 6, 8, 92},
750     {0, 1, 2, 3, 4, 5, 6, 8, 92},
751     {0, 1, 2, 3, 4, 5, 6, 8, 92},
752     {0, 1, 2, 3, 4, 5, 6, 8, 92},
753     {0, 1, 2, 3, 4, 5, 6, 8, 92},
754     {0, 1, 2, 3, 4, 5, 6, 8, 92},
755     {0, 1, 2, 3, 4, 5, 6, 8, 92},
756     {0, 1, 2, 3, 4, 5, 6, 8, 92},
757     {0, 1, 2, 3, 4, 5, 6, 8, 92},
758     {0, 1, 2, 3, 4, 5, 6, 8, 92},
759     {0, 1, 2, 3, 4, 5, 6, 8, 92},
760     {0, 1, 2, 3, 4, 5, 6, 8, 92},
761     {0, 1, 2, 3, 4, 5, 6, 8, 92},
762     {0, 1, 2, 3, 4, 5, 6, 8, 92},
763     {0, 1, 2, 3, 4, 5, 6, 8, 92},
764     {0, 1, 2, 3, 4, 5, 6, 8, 92},
765     {0, 1, 2, 3, 4, 5, 6, 8, 92},
766     {0, 1, 2, 3, 4, 5, 6, 8, 92},
767     {0, 1, 2, 3, 4, 5, 6, 8, 92},
768     {0, 1, 2, 3, 4, 5, 6, 8, 92},
769     {0, 1, 2, 3, 4, 5, 6, 8, 92},
770     {0, 1, 2, 3, 4, 5, 6, 8, 92},
771     {0, 1, 2, 3, 4, 5, 6, 8, 92},
772     {0, 1, 2, 3, 4, 5, 6, 8, 92},
773     {0, 1, 2, 3, 4, 5, 6, 8, 92},
774     {0, 1, 2, 3, 4, 5, 6, 8, 92},
775     {0, 1, 2, 3, 4, 5, 6, 8, 92},
776     {0, 1, 2, 3, 4, 5, 6, 8, 92} } ;
777 pamela 1.1
778 pamelats 1.5 Float_t A0t[48][9] = {
779     {0, 0.707632, 5.09223, 7.99994, 11, 13, 16, 18, 2000},
780     {0, 0.636707, 6.37524, 8, 11, 13.0002, 16.0001, 18, 2000},
781     {0, 0.952117, 6.04188, 7.99999, 11, 13, 16, 18, 2000},
782     {0, 0.880805, 5.80883, 8.00003, 11.0001, 13.0005, 16.0011, 18.0027, 2000},
783     {0, 0.834937, 5.12617, 8, 11, 13, 16, 17.9998, 2000},
784     {0, 0.772954, 5.17221, 8, 11, 13, 16, 18.0006, 2000},
785     {0, 0.911496, 5.04755, 8, 11, 13, 16, 18, 2000},
786     {0, 0.86523, 5.55215, 8, 11, 13, 16, 17.9999, 2000},
787     {0, 1.06061, 5.49757, 12, 15, 20, 25, 25, 2000},
788     {0, 0.5, 1.8, 3, 3.8, 6.49999, 7.99996, 8.99998, 2000},
789     {0, 1.06974, 4.86153, 7.99999, 11, 13, 16, 18, 2000},
790     {0, 1.0465, 6.00778, 8, 11, 13, 16, 17.9999, 2000},
791     {0, 1.18132, 5.48741, 8, 11, 13, 16, 17.9999, 2000},
792     {0, 1.10823, 5.43611, 8, 11, 13, 16, 18.0001, 2000},
793     {0, 1.19621, 5.27647, 7.99994, 11, 13, 16, 18, 2000},
794     {0, 1.72505, 5.14873, 8.00006, 11, 13, 16, 17.9999, 2000},
795     {0, 1.48515, 6.07123, 8.00006, 11, 13.0003, 16, 17.9999, 2000},
796     {0, 1.17628, 6.63392, 8.00011, 11, 13, 16, 17.9999, 2000},
797     {0, 1.11301, 5.94317, 7.99999, 11, 13, 16, 18, 2000},
798     {0, 1.04361, 6.40789, 8.00002, 11.0002, 13.0015, 16, 17.9996, 2000},
799     {0, 1.12658, 5.69828, 8, 11, 13, 16, 18.0001, 2000},
800     {0, 0.840188, 5.44945, 8.00005, 11, 13, 16, 18, 2000},
801     {0, 1.16985, 6.21385, 8.00012, 11, 13.0002, 16, 17.9999, 2000},
802     {0, 0.977696, 5.70252, 8.00004, 11, 13, 16, 17.9999, 2000},
803     {0, 1.26298, 6.03137, 8.00003, 11, 13, 16.0009, 17.9998, 2000},
804     {0, 0.988707, 5.98453, 8, 11, 13, 16, 18.0001, 2000},
805     {0, 1.22109, 6.76385, 8.00002, 11, 13.0005, 16.0001, 18.0006, 2000},
806     {0, 1.65541, 6.01998, 8.00006, 11.0057, 13, 16, 18, 2000},
807     {0, 1.59779, 6.00152, 7.00005, 7.99997, 8.99997, 14.9991, 18, 2000},
808     {0, 1.6515, 5.95297, 7.99999, 10, 12, 14.9995, 18, 2000},
809     {0, 1.70339, 6.43684, 9, 12, 14, 16, 21.9999, 2000},
810     {0, 1.64867, 5.6503, 8, 10, 12, 14.9999, 18, 2000},
811     {0, 1.83955, 6.64378, 9, 12, 14, 16, 22, 2000},
812     {0, 1.71975, 6.42585, 9, 12, 14, 16, 22, 2000},
813     {0, 1.88735, 6.12987, 8, 10, 12, 15.0001, 18, 2000},
814     {0, 1.86719, 5.94227, 8, 10, 12, 14.9999, 20,2000},
815     {0, 2.55127, 5.83621, 8.99997, 12, 15, 17.9999, 21.9998, 2000},
816     {0, 2.59328, 5.90275, 8.99999, 12, 15, 18, 22, 2000},
817     {0, 2.63523, 6.56428, 9.00004, 12, 15.0003, 18.001, 22.0029, 2000},
818     {0, 2.63114, 6.77412, 8.99995, 11.9998, 14.9997, 17.9996, 21.9998, 2000},
819     {0, 2.48986, 6.43372, 8.99996, 11.9998, 14.9995, 17.9997, 21.9995, 2000},
820     {0, 2.43724, 6.51911, 9.00012, 12, 15, 18, 21.9999, 2000},
821     {0, 3.21403, 5.7, 9, 12, 15, 18, 22, 2000},
822     {0, 3.3517, 6.30461, 8.99997, 12, 15, 18, 22, 2000},
823     {0, 3.0843, 5.90189, 8.99993, 12, 15, 18, 22, 2000},
824     {0, 3.35806, 6.20792, 8.99998, 12.0001, 15, 18, 22, 2000},
825     {0, 3.13525, 5.60432, 8.99997, 12, 15.0001, 18, 22, 2000},
826     {0, 3.26271, 6.38934, 9, 12, 15, 18, 22.0001, 2000} };
827 pamela 1.1
828    
829     Float_t A1t[48][9] = {
830 pamelats 1.5 { 0, 0.182202, -3.48762, -4.67241, -5.61872, 2.35336, -2.4112, -0.7861, 0 },
831     { 0, 0.528581, -6.33244, 0.176685, -3.3272, 5.47434, 7.62771, 18.9223, 0 },
832     { 0, -0.148985, -5.31035, -3.1044, -1.84685, -0.678725, -0.00713058, 11.2127, 0 },
833     { 0, 0.01113, -4.6759, -0.669811, 1.69435, 7.44019, 12.2231, 26.9653, 0 },
834     { 0, 0.0567585, -3.05564, -2.57264, -0.0868904, 4.88938, 2.64699, -10, 0 },
835     { 0, 0.331112, -3.06987, -0.451796, -0.660912, 4.49088, 6.43095, 16.7904, 0 },
836     { 0, 0.0779621, -2.64271, -2.29896, -1.95824, 1.8888, 1.02257, 10.5746, 0 },
837     { 0, 0.257346, -3.93191, 0.564894, 2.04068, 4.12823, 5.87416, 16.2268, 0 },
838     { 0, -0.332593, -3.65149, 0, 10, 20, 30, 40, 0 },
839     { 0, 0, 0, -0.5, 0, -6.80247, -9.43463, -8.44329, 0 },
840     { 0, -0.25099, -2.53532, -2.43846, -2.94008, -1.01258, -1.10502, 5.16068, 0 },
841     { 0, -0.101144, -4.98664, -0.369916, 2.2648, 4.2727, 3.1653, 19.8617, 0 },
842     { 0, -0.5074, -3.98429, -0.306633, 0.562595, 5.05787, 4.70127, 14.2399, 0 },
843     { 0, -0.326603, -3.83632, -1.75409, -1.86815, 0.84194, 1.32718, 14.4304, 0 },
844     { 0, -0.597543, -3.82759, -6.9094, -2.88583, 5.50573, 4.30943, 18.0664, 0 },
845     { 0, -1.86862, -3.80777, -2.69084, -4.09258, 1.59904, 4.61543, 13.8186, 0 },
846     { 0, -0.932447, -6.02195, -0.891975, 0.870346, 7.22131, 6.03928, 20.5102, 0 },
847     { 0, -0.439221, -7.66335, -2.7363, -3.29581, 3.74263, 3.2571, 15.8539, 0 },
848     { 0, -0.487944, -5.05733, -2.61662, -2.86336, 2.65017, -0.919043, 7.10535, 0 },
849     { 0, -0.0329559, -6.07396, -0.0044396, 2.75593, 8.87808, 14.9627, 28.8783, 0 },
850     { 0, -0.573054, -4.15302, -2.15074, -1.83499, 0.969726, 1.36361, 17.6185, 0 },
851     { 0, 0.238198, -3.75628, -1.02674, 1.12711, 3.06917, 2.61956, 11.2723, 0 },
852     { 0, -0.473325, -5.88165, -2.10476, -0.508963, 4.24835, 6.41943, 14.9346, 0 },
853     { 0, 0.0585487, -4.40372, -1.45949, 1.31992, 4.7115, 5.03433, 11.968, 0 },
854     { 0, -0.836615, -5.05945, -0.644868, 2.3894, 9.40413, 11.4195, 25.3239, 0 },
855     { 0, 0.026064, -4.78872, -0.819969, -0.57223, 1.84866, 0.29272, 15.1362, 0 },
856     { 0, -0.659228, -6.61715, 0.371846, 4.36719, 10.657, 17.8551, 29.3359, 0 },
857     { 0, -1.27483, -4.52966, -1.85458, -0.9634, 3.65819, 2.89211, 13.508, 0 },
858     { 0, -1.49858, -5.08299, 0.103222, 3.84545, 3.46523, -13.6535, -20, 0 },
859     { 0, -1.70043, -4.92192, -2.46523, -0.681845, -2.80632, -8.55159, -20, 0 },
860     { 0, -1.85437, -5.65787, -1.56314, 0.372468, 4.54151, 2.97956, -7.90681, 0 },
861     { 0, -1.78092, -4.19601, -1.84397, -0.175657, -2.0339, -5.64021, -20, 0 },
862     { 0, -2.08786, -6.05197, -1.81875, -0.423923, 5.86772, 7.50042, 4.22714, 0 },
863     { 0, -1.78679, -5.6835, -1.22858, -0.764359, 2.71007, 4.16034, 4.49981, 0 },
864     { 0, -2.21623, -5.39176, -0.174751, 0.19786, -1.93316, -7.45927, -20, 0 },
865     { 0, -2.2076, -4.93708, -1.49415, 0.576195, 0.552502, -5.02466, -18, 0 },
866     { 0, -3.95472, -4.97236, -5.73642, -7.17611, -8.40014, -10.7071, -13.5198, 0 },
867     { 0, -3.98713, -4.90269, -4.51467, -4.74549, -5.13124, -6.02539, -4.36386, 0 },
868     { 0, -4.09193, -6.36148, -1.92129, 0.535293, 4.36379, 8.09335, 21.4513, 0 },
869     { 0, -4.09301, -6.86077, -8.51634, -10.7671, -15.4194, -19.8748, -18.2532, 0 },
870     { 0, -3.66083, -6.39249, -8.20002, -12.5867, -18.523, -21.1403, -22.5493, 0 },
871     { 0, -3.66449, -6.84751, -3.49245, -4.82854, 0.21682, 0.54105, -16.1417, 0 },
872     { 0, -5.55283, -4.22, -4.20093, -2.0392, -1.493, 0.481244, 6.28662, 0 },
873     { 0, -5.93701, -5.45729, -6.95403, -6.68625, -5.13187, -5.10613, -2.64945, 0 },
874     { 0, -5.25381, -4.94071, -7.72978, -4.67849, -4.74316, -3.91651, 1.17451, 0 },
875     { 0, -6.01523, -5.33454, -6.26672, -5.88745, -8.91118, -11.1342, -7.91073, 0 },
876     { 0, -5.53583, -4.3686, -8.88023, -6.36106, -4.70941, -3.2139, -0.381882, 0 },
877     { 0, -5.7646, -6.25807, -5.12981, -1.5055, -1.11425, -0.388791, 8.42188, 0 } };
878    
879 pamela 1.1
880     Float_t A2t[48][9] = {
881 pamelats 1.5 { 0, 0.317852, 2.46394, 4.35287, 6.69993, 1.37704, 9.38636, 22.3426, 0 },
882     { 0, 0.0270999, 4.03858, 0.614142, 7.64715, 3, 4.55046, 9.46688, 0 },
883     { 0, 0.422802, 3.25444, 2.83067, 3.78916, 7.15528, 9.61404, 9.53181, 0 },
884     { 0, 0.27719, 2.81849, 2, 3, 3, 3, 3, 0 },
885     { 0, 0.257138, 1.96682, 2.66388, 2.02686, 0.981737, 7.07876, 32, 0 },
886     { 0, 0.0777448, 1.95238, 0.591915, 3.36314, 1.71777, 3.1121, 3, 0 },
887     { 0, 0.201297, 1.54333, 2.06343, 3.81529, 3.47056, 7.66122, 10.2165, 0 },
888     { 0, 0.090275, 2.35456, 0.150419, 1.48979, 4.43331, 6.09798, 9.59925, 0 },
889     { 0, 0.472466, 2.2568, 0, 0, 0, 0, 0, 0 },
890     { 0, 0, 0, 0, 0, 5.8114, 8.76464, 11.718, 0 },
891     { 0, 0.369669, 1.66502, 2.21937, 4.8545, 6.71778, 9.52608, 13.5645, 0 },
892     { 0, 0.278447, 3.03196, 0.562358, 0.978803, 4.19387, 9.26949, 4.33973, 0 },
893     { 0, 0.488781, 2.52383, 0.674871, 2.54554, 2.33603, 6.75428, 10.7769, 0 },
894     { 0, 0.396462, 2.42949, 1.33035, 3.9579, 4.98889, 7.41728, 8.78462, 0 },
895     { 0, 0.616543, 2.39152, 7.13157, 4.52173, 0.795959, 5.05895, 3.58876, 0 },
896     { 0, 1.3407, 2.54098, 2, 7.35567, 6.08494, 6.47321, 6.60084, 0 },
897     { 0, 0.855061, 3.97328, 2, 3, 3, 10.1946, 7.06782, 0 },
898     { 0, 0.492265, 5.11681, 2, 2.24085, 0.00142742, 3.12852, 1.94308, 0 },
899     { 0, 0.594536, 3.10529, 2.07652, 4.86122, 2.7748, 10.0368, 14.8149, 0 },
900     { 0, 0.220041, 3.69287, 2, 3, 3, 0.0668348, 0.124322, 0 },
901     { 0, 0.652342, 2.52474, 1.92129, 3.97957, 5.4076, 8.66393, 5.53485, 0 },
902     { 0, 0.109911, 2.37426, 2, 2.09403, 4.25338, 7.64627, 8.96803, 0 },
903     { 0, 0.503317, 3.66579, 2, 3, 3, 3.95553, 7.79201, 0 },
904     { 0, 0.18358, 2.71524, 2, 1.64493, 2.67235, 6.00813, 13.3661, 0 },
905     { 0, 0.762639, 3.10968, 2, 1.79493, 0.0228019, 3, 6.68329, 0 },
906     { 0, 0.218363, 2.87712, 0.218535, 3, 4.57375, 9.68986, 4.89219, 0 },
907     { 0, 0.675406, 4.00709, 2, 1.07325, 3, 0.182969, 8.20433, 0 },
908     { 0, 0.991549, 2.68269, 2, 3.876, 2.94015, 6.72011, 7.03988, 0 },
909     { 0, 1.02743, 3.12518, 2, 2.20294, 6.63646, 22.0153, 35, 0 },
910     { 0, 1.18885, 3.01461, 2.30242, 3.46316, 8.98077, 16.6101, 35, 0 },
911     { 0, 1.47119, 3.24004, 1.07333, 2.31147, 2.98418, 9.99881, 28.0778, 0 },
912     { 0, 1.28408, 2.55246, 1.49292, 3.01143, 8.45419, 13.2062, 35, 0 },
913     { 0, 1.56497, 3.35834, 0.73553, 3, 2.13162, 5.84836, 18.6428, 0 },
914     { 0, 1.39782, 3.19843, 0.593735, 3.34643, 4.22204, 6.78619, 12.8529, 0 },
915     { 0, 1.46182, 3.30186, 0.0348858, 3.87061, 9.87769, 16.8741, 35, 0 },
916     { 0, 1.50597, 3.03838, 1.62411, 2.96043, 7.1428, 15.4035, 35, 0 },
917     { 0, 2.6053, 2.92019, 3.8816, 7.13833, 9.84022, 13.4445, 22.2018, 0 },
918     { 0, 2.58901, 2.74623, 2.66245, 5.37385, 8.40354, 11.6502, 17.4423, 0 },
919     { 0, 2.65151, 3.592, 2, 3, 3, 3, 3, 0 },
920     { 0, 2.65586, 3.87903, 6.12175, 9.92231, 16.1427, 21.4766, 21.4604, 0 },
921     { 0, 2.38768, 3.77375, 5.67703, 11.8596, 18.8674, 20.8655, 24.5083, 0 },
922     { 0, 2.40258, 4.1273, 2, 5.81564, 2.29756, 4.40615, 32.3639, 0 },
923     { 0, 3.54156, 2.13, 2.79762, 2.76993, 4.67104, 5.20053, 8.36394, 0 },
924     { 0, 3.76292, 2.83393, 5.30926, 6.67988, 7.35393, 9.46522, 14.8599, 0 },
925     { 0, 3.37723, 2.74166, 6.71253, 5.63259, 8.42885, 9.99872, 14.8742, 0 },
926     { 0, 3.83378, 2.79501, 4.78642, 5.94201, 11.4635, 14.7442, 16.5806, 0 },
927     { 0, 3.59181, 2.3773, 7.14813, 5.60101, 6.47122, 6.64957, 14.2374, 0 },
928     { 0, 3.68523, 3.54382, 3.92867, 2.18506, 5.56025, 7.75895, 7.448, 0 } };
929 pamela 1.1
930    
931     // S115B failure: 1158700000 // 2006-09-19 21:06:40 UTC
932    
933 pamelats 1.2 if (time < 1158700000.) { // first workaround: just use calibration of PMT S115A
934 pamela 1.1 for ( Int_t jj=0; jj<9; jj++ ){
935     A0t[9][jj] = A0t[8][jj] ;
936     A1t[9][jj] = A1t[8][jj] ;
937     A2t[9][jj] = A2t[8][jj] ;
938     }
939     } // if time...
940    
941    
942     // 2nd-order correction
943     Float_t corr_a[6][4] = {
944 pamelats 1.5 {0.551894 , 2.24353 , -3.35885 , 1.51401} ,
945     {0.915691 , 4.83967 , -6.85389 , 3.13679} ,
946     {1.84338 , 5.63517 , -8.41577 , 4.04055} ,
947     {1.51216 , 11.3233 , -16.2119 , 7.45008} ,
948     {1.50481 , 15.2538 , -21.2003 , 9.51127} ,
949     {1.82038 , 17.5336 , -23.5512 , 10.3036} };
950 pamela 1.1
951     //---------------------------------------------------------------------
952    
953 mocchiut 1.7 //Float_t xv[6],yv[6];
954 pamela 1.1 Int_t iz;
955    
956     Float_t x1[9],y1[9];
957     Int_t n1 = 9;
958    
959 pamelats 1.2 Float_t Layercharge[6] = {1005., 1005., 1005., 1005., 1005., 1005. };
960    
961 pamela 1.1 Int_t Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
962    
963 mocchiut 1.8 //Float_t adc[48],adc_c[48],PMTcharge_arr[48];
964     Float_t adc[48],PMTcharge_arr[48];
965 pamelats 1.2
966     Float_t beta_mean = fabs(track->beta[12]);
967 pamela 1.1
968 pamelats 1.2 // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in
969     if (beta_in != 100.) beta_mean=beta_in;
970 pamela 1.1
971     Int_t ncount=0;
972     Float_t charge_chi=1000.;
973    
974    
975     //-------------------------------------------------------------
976    
977     // fill adc and tdc
978    
979     Int_t ich,jj,kk;
980    
981     for (ich=0; ich<48; ich++) adc[ich] = 4095.;
982 mocchiut 1.8 // for (ich=0; ich<48; ich++) adc_c[ich] = 1000.;
983 pamela 1.1 for (ich=0; ich<48; ich++) PMTcharge_arr[ich] = 1000.;
984    
985 pamelats 1.2
986     if ((beta_mean < 0.05) || (beta_mean > 2.0)) {
987     for (Int_t jj=0; jj<48;jj++) charge_PMT_std[jj] = 1001.;
988     for (Int_t jj=0; jj<6;jj++) charge_layer_std[jj] = 1001.;
989 pamelats 1.6 for (Int_t jj=0; jj<6;jj++) charge_layer_std_raw[jj] = 1001.;
990 mocchiut 1.7 for (Int_t jj=0; jj<6;jj++) layerinfo_std[jj] = 1001;
991 pamelats 1.2 charge_std = 1001.;
992     ncount_std = 0;
993     }
994    
995    
996     if ((beta_mean > 0.05) && (beta_mean < 2.0)) {
997    
998 pamela 1.1 Float_t betahelp = pow(beta_mean, 1.2);
999    
1000     //=======================================================================
1001    
1002     for (Int_t ipmt=0; ipmt<L2->GetToFLevel2()->npmt() ; ipmt++){
1003     ToFPMT *tofpmt = L2->GetToFLevel2()->GetToFPMT(ipmt);
1004     Int_t pmt_id = tofpmt->pmt_id;
1005     adc[pmt_id] = tofpmt->adc ;
1006     }
1007    
1008     //=======================================================================
1009    
1010     Float_t yl, yh, ym, m, b, chelp, charge;
1011    
1012    
1013     for (Int_t ipmt=0; ipmt<track->npmtadc; ipmt++){
1014     Float_t dEdx = track->dedx[ipmt];
1015     ym = dEdx*betahelp;
1016     Int_t pmtadc = track->pmtadc[ipmt];
1017 mocchiut 1.8 // Int_t adcflag = track->adcflag[ipmt];
1018 pamela 1.1 L2->GetToFLevel2()->GetPMTIndex(pmtadc,jj,kk);
1019 mocchiut 1.8 // if (adcflag==0) adc_c[pmtadc] = dEdx;
1020 pamelats 1.2
1021 mocchiut 1.8 // if (adc[pmtadc] == 4095) adc_c[pmtadc] = 0.;
1022 pamelats 1.2 if (adc[pmtadc] == 4095) PMTcharge_arr[pmtadc] = 0.;
1023    
1024 mocchiut 1.8 // if ((adc[pmtadc]>PMTsat[pmtadc]) && (adc[pmtadc]<4095)) adc_c[pmtadc] = 1000.;
1025 pamela 1.1
1026     if (adc[pmtadc] < PMTsat[pmtadc]) {
1027    
1028 pamelats 1.4 if ((pmtadc!=4) && (pmtadc!=8) && (pmtadc!=28) && (pmtadc!=31) && (pmtadc!=34) && (pmtadc!=39) && (pmtadc!=41) && (pmtadc!=46)) {
1029 pamela 1.1
1030     for ( Int_t jj=0; jj<9; jj++ ){
1031     x1[jj] = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean;
1032     y1[jj] = C0t[pmtadc][jj]*C0t[pmtadc][jj] ;
1033     // cout<<x1[jj]<<" "<<y1[jj]<<" ";
1034     }
1035     // cout<<endl;
1036    
1037    
1038     TGraph *gr2 = new TGraph(n1,x1,y1);
1039     TSpline3 *spl2 = new TSpline3("grs",gr2); // use a cubic spline
1040     chelp = spl2->Eval(ym);
1041 pamelats 1.3 if (chelp<0.) chelp=0.0001; //WM new
1042 pamela 1.1 charge = TMath::Sqrt(chelp);
1043    
1044     gr2->Delete();
1045     spl2->Delete();
1046     PMTcharge_arr[pmtadc] = charge;
1047     } // pmtadc != ...
1048    
1049 pamelats 1.5 if ((pmtadc==4) || (pmtadc==8) || (pmtadc==28) || (pmtadc==31) || (pmtadc==34) || (pmtadc==39) || (pmtadc==41) || (pmtadc==46)) {
1050 pamela 1.1 for ( Int_t jj=0; jj<8; jj++ ){
1051     yl = A0t[pmtadc][jj]+A1t[pmtadc][jj]*beta_mean+A2t[pmtadc][jj]*beta_mean*beta_mean;
1052     yh = A0t[pmtadc][jj+1]+A1t[pmtadc][jj+1]*beta_mean+A2t[pmtadc][jj+1]*beta_mean*beta_mean;
1053     if ((yl<ym)&&(ym<yh)){
1054     m = (C0t[pmtadc][jj+1]*C0t[pmtadc][jj+1] - C0t[pmtadc][jj]*C0t[pmtadc][jj]) / (yh - yl);
1055     b = (C0t[pmtadc][jj]*C0t[pmtadc][jj]) - m*yl;
1056     chelp = m*ym + b;
1057 pamelats 1.3 if (chelp<0.) chelp=0.0001; //WM new
1058 pamela 1.1 charge= TMath::Sqrt(chelp);
1059     PMTcharge_arr[pmtadc] = charge;
1060     }
1061     } // jj=0..8
1062     } // if pmtadc ==....
1063    
1064     } // adc < sat
1065     } // ipmt...
1066    
1067    
1068     //====================================================================
1069     //============= Check ToF standalone using HitPaddle ===================
1070     //====================================================================
1071    
1072     Int_t PaddleIdOfTrack[6] = {-1, -1, -1, -1, -1, -1};;
1073    
1074     for(jj=0; jj<8; jj++){
1075     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(0,jj);
1076     if (HitPad==1) PaddleIdOfTrack[0] = jj;
1077     }
1078     for(jj=0; jj<6; jj++){
1079     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(1,jj);
1080     if (HitPad==1) PaddleIdOfTrack[1] = jj;
1081     }
1082    
1083    
1084     for(jj=0; jj<2; jj++){
1085     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(2,jj);
1086     if (HitPad==1) PaddleIdOfTrack[2] = jj;
1087     }
1088     for(jj=0; jj<2; jj++){
1089     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(3,jj);
1090     if (HitPad==1) PaddleIdOfTrack[3] = jj;
1091     }
1092    
1093     for(jj=0; jj<3; jj++){
1094     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(4,jj);
1095     if (HitPad==1) PaddleIdOfTrack[4] = jj;
1096     }
1097     for(jj=0; jj<3; jj++){
1098     Int_t HitPad = L2->GetToFLevel2()->HitPaddle(5,jj);
1099     if (HitPad==1) PaddleIdOfTrack[5] = jj;
1100     }
1101    
1102     //==============================================================
1103    
1104    
1105     Int_t ihelp_a[6] = {0,16,28,32,36,42};
1106    
1107     for (Int_t ilay=0; ilay<6; ilay ++) {
1108     Int_t jj = PaddleIdOfTrack[ilay] ;
1109 pamelats 1.2 //Float_t xhelp = 1000.;
1110     Float_t xhelp = 1005.;
1111 pamela 1.1
1112     if (jj == -1) Layerinfo[ilay] = -1;
1113    
1114     if (jj != -1) {
1115     Int_t ih = ihelp_a[ilay] + 2*jj;
1116 pamelats 1.3
1117     // New WM
1118     Int_t igood1=0;
1119     Int_t igood2=0;
1120     if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih] > 0.)) igood1=1;
1121     if ((PMTcharge_arr[ih+1] < 1000.) && (PMTcharge_arr[ih+1] > 0.)) igood2=1;
1122    
1123     if ((PMTcharge_arr[ih]==0.) && (PMTcharge_arr[ih+1]==0.)) xhelp = 0.;
1124     if ((igood1==1)&&(igood2==1)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ;
1125     if ((igood1==1)&&(igood2==0)) xhelp = PMTcharge_arr[ih];
1126     if ((igood2==1)&&(igood1==0)) xhelp = PMTcharge_arr[ih+1];
1127    
1128    
1129     /*
1130 pamela 1.1 if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = 0.5*(PMTcharge_arr[ih]+PMTcharge_arr[ih+1]) ;
1131     if ((PMTcharge_arr[ih] < 1000.) && (PMTcharge_arr[ih+1]==1000.)) xhelp = PMTcharge_arr[ih] ;
1132     if ((PMTcharge_arr[ih]==1000.) && (PMTcharge_arr[ih+1] < 1000.)) xhelp = PMTcharge_arr[ih+1] ;
1133 pamelats 1.3 */
1134 pamela 1.1
1135     if (adc[ih] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1;
1136     if (adc[ih+1] == 4095) Layerinfo[ilay] = Layerinfo[ilay] + 1;
1137     if ((adc[ih] > PMTsat[ih]) && (adc[ih] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10;
1138     if ((adc[ih+1] > PMTsat[ih+1]) && (adc[ih+1] < 4095)) Layerinfo[ilay] = Layerinfo[ilay] + 10;
1139    
1140    
1141     }
1142     Layercharge[ilay] = xhelp;
1143     } // ilay ...
1144    
1145    
1146     //cout<<"Std: ";
1147     //for (Int_t ilay=0; ilay<6; ilay ++) cout<<Layercharge[ilay]<<" ";
1148    
1149     //==========================================================================
1150 pamelats 1.6 //============= Layercharge without 2nd-order correction =================
1151     //==========================================================================
1152    
1153     for (Int_t jj=0; jj<6;jj++) charge_layer_std_raw[jj] = Layercharge[jj];
1154    
1155     //==========================================================================
1156 pamela 1.1 //========================= 2nd-order correction =======================
1157     //==========================================================================
1158    
1159     Float_t xb = beta_mean;
1160    
1161     for (Int_t ii=0; ii<6; ii++) {
1162     Int_t ic = 0;
1163     Float_t corr[4] = {1., 0., 0., 0.};
1164 pamelats 1.2 //for (Int_t iii=1; iii<9; iii++) if (fabs(Layercharge[ii] - iii)<0.50) ic = iii;
1165     for (Int_t iii=1; iii<10; iii++) if (fabs(Layercharge[ii] - iii)<0.50) ic = iii;
1166 pamela 1.1 if ((ic>0)&&(ic<=5)) for (Int_t iii=0; iii<4; iii++) corr[iii] = corr_a[ic-1][iii];
1167     if (ic >5) for (Int_t iii=0; iii<4; iii++) corr[iii] = corr_a[5][iii];
1168    
1169     Float_t c_corr = corr[0]+corr[1]*xb+corr[2]*xb*xb+corr[3]*xb*xb*xb;
1170    
1171     if ((ic>0)&&(ic<=5)) c_corr = c_corr/(1.*ic) ;
1172     if (ic>5) c_corr = c_corr/6. ;
1173    
1174 pamelats 1.2 //cout<<Layercharge[ii]<<" "<<ic<<" "<<c_corr<<" => ";
1175 pamela 1.1 Layercharge[ii] = Layercharge[ii]/c_corr;
1176 pamelats 1.2 //cout<<Layercharge[ii]<<endl;
1177 pamela 1.1
1178     }
1179    
1180 pamelats 1.2
1181 pamela 1.1 //==========================================================================
1182 pamelats 1.2 //cout<<"In ToFNuclei Std: ";
1183     //for (Int_t ilay=0; ilay<6; ilay ++) cout<<Layercharge[ilay]<<" ";
1184     //cout<<endl;
1185 pamela 1.1 //==========================================================================
1186    
1187    
1188     Int_t icount=0;
1189     Float_t charge_mean = 0.;
1190     for (Int_t ii=0; ii<6; ii++) {
1191     if (Layercharge[ii] < 1000) charge_mean = charge_mean + Layercharge[ii] ;
1192     if (Layercharge[ii] < 1000) icount++;
1193     }
1194     if (icount>0) charge_mean = charge_mean/(1.*icount) ;
1195    
1196 pamelats 1.2 if (icount>0) {
1197    
1198     //for (Int_t ii=0; ii<6; ii++) cout<<Layercharge[ii]<<" ";
1199     //cout<<endl;
1200    
1201    
1202     vector<float> charge_v;
1203     Float_t charge_median = 0.;
1204    
1205     //////// get the median charge ////////////
1206     for(Int_t ii=0;ii<6;ii++) {
1207     if (Layercharge[ii] < 1000) charge_v.push_back(Layercharge[ii]);
1208     }
1209    
1210     std::sort(charge_v.begin(),charge_v.end());
1211     charge_median = charge_v[(int)(charge_v.size()/2+charge_v.size()%2)-1];
1212    
1213     //cout<<charge_mean<<" "<<charge_median<<endl;
1214    
1215     charge_mean = charge_median;
1216    
1217     } // icount>0
1218 pamela 1.1
1219     //--- Calculate charge for the second time, use residuals of the single
1220     //--- measurements to get a chi2 value
1221    
1222     // Float_t w_i_arr[8] = {0.1, 0.15, 0.2, 0.25, 0.30, 0.35, 0.45, 0.50};
1223     Float_t w_i_arr[8] = {0.1, 0.15, 0.2, 0.25, 0.35, 0.40, 0.50, 0.55};
1224    
1225     icount=0;
1226     Float_t sw=0.;
1227     Float_t sxw=0.;
1228     Float_t w_i = 1./0.5;
1229     Float_t resmax= 3.0;
1230    
1231     iz=1;
1232     if ((0.0<charge_mean) & (charge_mean<1.5)) iz=1;
1233     if ((1.5<charge_mean) & (charge_mean<2.5)) iz=2;
1234     if ((2.5<charge_mean) & (charge_mean<3.5)) iz=3;
1235     if ((3.5<charge_mean) & (charge_mean<4.5)) iz=4;
1236     if ((4.5<charge_mean) & (charge_mean<5.5)) iz=5;
1237     if ((5.5<charge_mean) & (charge_mean<6.5)) iz=6;
1238     if ((6.5<charge_mean) & (charge_mean<7.5)) iz=7;
1239     if ((7.5<charge_mean) & (charge_mean<90.)) iz=8;
1240    
1241     w_i = 1./w_i_arr[iz-1];
1242    
1243    
1244     for (Int_t jj=0; jj<6;jj++){
1245     if (Layercharge[jj] < 1000) {
1246     Float_t res = charge_mean - Layercharge[jj] ;
1247     if (fabs(res*w_i)<resmax) {;
1248     icount= icount+1;
1249     sxw=sxw + Layercharge[jj]*w_i*w_i ;
1250     sw =sw + w_i*w_i ;
1251     }
1252     }
1253     }
1254    
1255     if (icount>0) charge_chi=sxw/sw;
1256    
1257     ncount = icount;
1258    
1259     //cout<<" => "<<icount<<" "<<charge_chi<<endl;
1260    
1261    
1262     // charge_tof = charge_chi;
1263    
1264 pamelats 1.2 // changed 30-01-2009 WM
1265 pamela 1.1
1266 pamelats 1.2 for (Int_t jj=0; jj<48;jj++) charge_PMT_std[jj] = PMTcharge_arr[jj];
1267 pamela 1.1 for (Int_t jj=0; jj<6;jj++) charge_layer_std[jj] = Layercharge[jj];
1268     for (Int_t jj=0; jj<6;jj++) layerinfo_std[jj] = Layerinfo[jj];
1269     charge_std = charge_chi;
1270     ncount_std = ncount;
1271    
1272 pamelats 1.2 } // 0.05 < fabs( beta) < 2.0
1273    
1274    
1275 pamela 1.1 } // standalone track found
1276    
1277     }

  ViewVC Help
Powered by ViewVC 1.1.23