/[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.2 - (hide 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 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     //26-feb-2009: Inserted S115B calibartions from Lucia
8     //
9     //*****************************************************
10 pamela 1.1 #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 pamelats 1.2 beta_in = 100.;
27     //
28 pamela 1.1 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 pamelats 1.2 memset (charge_PMT_trk,0,48*sizeof(Float_t)); //
45 pamela 1.1 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 pamelats 1.2 memset (charge_PMT_std,0,48*sizeof(Float_t)); //
50 pamela 1.1 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 pamelats 1.2 if ( !newentry ) {
100     return;
101     }
102 pamela 1.1 //
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 pamelats 1.2 // cout<<"beta_in = "<<beta_in<<endl;
115    
116 pamela 1.1
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 pamelats 1.2 /*
128 pamela 1.1 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 pamelats 1.2 };
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 pamela 1.1
149 pamelats 1.2 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 pamela 1.1
199    
200     Float_t A0t[48][9] = {
201 pamelats 1.2 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 pamela 1.1
251     Float_t A1t[48][9] = {
252 pamelats 1.2 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 pamela 1.1
302     Float_t A2t[48][9] = {
303 pamelats 1.2 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 pamela 1.1
353     // S115B failure: 1158700000 // 2006-09-19 21:06:40 UTC
354    
355 pamelats 1.2 if (time < 1158700000.) { // first workaround: just use calibration of PMT S115A
356 pamela 1.1 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 pamelats 1.2
378     Float_t Layercharge[6] = {1005., 1005., 1005., 1005., 1005., 1005. };
379 pamela 1.1
380     Int_t Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
381    
382 pamelats 1.2 Float_t adc[48],adc_c[48],PMTcharge_arr[48];
383    
384 pamela 1.1 //------------------------------------------------------------------
385    
386     PamTrack *track = L2->GetTrack(0);
387    
388     Float_t beta_mean = fabs(track->GetToFTrack()->beta[12]);
389 pamelats 1.2
390     // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in
391     if (beta_in != 100.) beta_mean=beta_in;
392    
393 pamela 1.1 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 pamelats 1.2
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 pamela 1.1 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 pamelats 1.2 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 pamela 1.1
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 pamelats 1.2
469 pamela 1.1 //----------------------------------------------------------------------------------------
470 pamelats 1.2
471 pamela 1.1 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 pamelats 1.2
487 pamela 1.1 } // 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 pamelats 1.2 //Float_t xhelp = 1000.;
515     Float_t xhelp = 1005.;
516 pamela 1.1
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 pamelats 1.2
561 pamela 1.1 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 pamelats 1.2 // changed 30-01-2009 WM
635 pamela 1.1
636 pamelats 1.2 for (Int_t jj=0; jj<48;jj++) charge_PMT_trk[jj] = PMTcharge_arr[jj];
637 pamela 1.1 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 pamelats 1.2 } // 0.05 < beta < 2.0
643    
644 pamela 1.1 } // 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 pamelats 1.2 /*
657 pamela 1.1 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 pamelats 1.2 */
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 pamela 1.1
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 pamelats 1.2 if (time < 1158700000.) { // first workaround: just use calibration of PMT S115A
807 pamela 1.1 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 pamelats 1.2 Float_t Layercharge[6] = {1005., 1005., 1005., 1005., 1005., 1005. };
830    
831 pamela 1.1 Int_t Layerinfo[6] = {0, 0, 0, 0, 0, 0 };
832    
833 pamelats 1.2 Float_t adc[48],adc_c[48],PMTcharge_arr[48];
834    
835     Float_t beta_mean = fabs(track->beta[12]);
836 pamela 1.1
837 pamelats 1.2 // New!! If "beta_in" != 100. then overwrite beta_mean with beta_in
838     if (beta_in != 100.) beta_mean=beta_in;
839 pamela 1.1
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 pamelats 1.2
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 pamela 1.1 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 pamelats 1.2
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 pamela 1.1
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 pamelats 1.2 //Float_t xhelp = 1000.;
976     Float_t xhelp = 1005.;
977 pamela 1.1
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 pamelats 1.2 //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 pamela 1.1 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 pamelats 1.2 //cout<<Layercharge[ii]<<" "<<ic<<" "<<c_corr<<" => ";
1020 pamela 1.1 Layercharge[ii] = Layercharge[ii]/c_corr;
1021 pamelats 1.2 //cout<<Layercharge[ii]<<endl;
1022 pamela 1.1
1023     }
1024    
1025 pamelats 1.2
1026 pamela 1.1 //==========================================================================
1027 pamelats 1.2 //cout<<"In ToFNuclei Std: ";
1028     //for (Int_t ilay=0; ilay<6; ilay ++) cout<<Layercharge[ilay]<<" ";
1029     //cout<<endl;
1030 pamela 1.1 //==========================================================================
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 pamelats 1.2 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 pamela 1.1
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 pamelats 1.2 // changed 30-01-2009 WM
1110 pamela 1.1
1111 pamelats 1.2 for (Int_t jj=0; jj<48;jj++) charge_PMT_std[jj] = PMTcharge_arr[jj];
1112 pamela 1.1 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 pamelats 1.2 } // 0.05 < fabs( beta) < 2.0
1118    
1119    
1120 pamela 1.1 } // standalone track found
1121    
1122     }

  ViewVC Help
Powered by ViewVC 1.1.23