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