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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (show annotations) (download)
Mon Mar 2 11:42:51 2009 UTC (15 years, 10 months ago) by pamelats
Branch: MAIN
Changes since 1.1: +341 -104 lines
Set_Beta added, S115B new calibration, Bugs fixed

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

  ViewVC Help
Powered by ViewVC 1.1.23