/[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.7 - (hide annotations) (download)
Thu Aug 6 12:06:18 2009 UTC (15 years, 5 months ago) by mocchiut
Branch: MAIN
Changes since 1.6: +7 -7 lines
Minor changes for gcc 4.1.2

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

  ViewVC Help
Powered by ViewVC 1.1.23