111{
112
113 for(
int d = 0;
d < 2;
d++ ){
114 for(
int ft = 0;
ft < 32;
ft++ ){
115 for( int sl = 0; sl < 15; sl++ )
117 }
118 }
119
120 TH1F *timefeb[2][32][16];
121 TF1 *fit1 = new TF1( "fit1" , "gaus" , 3 );
122
123 double Hist_entries, Fit_mean, Fit_sigma, Fit_error;
124
125 std::vector< std::vector<double> > myvec;
126 string tfilename;
127 tfilename =
"TimingFile" + nrun +
"_" +
name +
".txt";
128
130 {
131 std::cout<<" +++++ The file:" << tfilename <<" is empty, time-fit will not be performed +++"<<std::endl;
132 return ;
133 }
134
136
137 string Filename =
"OFCTime_PerFEB_" +
name +
".root";
138 TFile *FebTime = new TFile( Filename.c_str(), "READ");
139
140 double median2, TotalE = 0.0;
141 int dete = -1,
side, feedT, slot;
142
143 std::vector<double> myvector;
144 std::vector<double> myvector2;
145 std::vector<double>
energy;
146
148 string ffname =
"mediantest_" + nrun +
"_" +
name +
".txt";
149 ff.open(ffname.c_str(), ios::out);
150
151 for(
uint l = 0;
l < (myvec.size() -1);
l++ ){
152 float mean = myvec[
l][4];
153 double E = myvec[
l][5];
154 myvector.push_back(
mean);
155 myvector2.push_back(
mean);
158
159 if( ( myvec[l][3] != myvec[l+1][3] ) || ( l == myvec.size()-2 ) ){
160
162 myvector.clear();
163 myvector2.clear();
165 TotalE = 0;
167 feedT =
int(myvec[l][2]);
168 slot =
int(myvec[l][3]);
169 if( name == "EMB" ) dete = 0;
170 else if( name == "EMEC" ) dete = 1;
171 else if( name == "HEC" ) dete = 2;
172 else if( name == "FCAL" ) dete = 3;
173 ff << dete <<
" " <<
side <<
" " << feedT <<
" " << slot <<
" " << median2 << endl;
175 }
176 }
177
178 string savename =
"FEB_time_fitMean_" + nrun +
"_" +
name +
".txt";
180 file.open(savename.c_str(), ios::out);
181
182 double median_error;
183
184 std::vector<double> timevector;
185
187 if( name ==
"EMB" )
det = 0;
188 else if( name ==
"EMEC" )
det = 1;
189 else if( name ==
"HEC" )
det = 2;
190 else if( name ==
"FCAL" )
det = 3;
191
192 for(
int d = 0;
d < 2;
d++ ){
193 for(
int ft = 0;
ft < 32;
ft++ ){
194 for( int sl = 0; sl < 15; sl++ ){
195
199 if( !timefeb[d][ft][sl+1] )
200 break;
201
202 Hist_entries = timefeb[
d][
ft][sl+1]->GetEntries();
203
204 if( Hist_entries == 0 ) continue;
205
206 timefeb[
d][
ft][sl+1]->Fit(
"fit1",
"mE",
"N",-10, 10 );
207
208
210 rms = fit1->GetParameter(2);
211 double n1 = -99., n2 = -99.;
212 rmsDist=timefeb[
d][
ft][sl+1]->GetRMS();
214 max = timefeb[
d][
ft][sl+1]->GetXaxis()->GetBinCenter(timefeb[d][ft][sl+1]->GetMaximumBin());
215
216 if( name == "FCAL" ) n1 = n2 = 0.8;
217 else if( name == "EMEC" ){
218 if( sl+1 == 13 && rmsDist > 3.0 ){
219 n1 = 1.5; n2 = 1.;
220 }
221 else if( rmsDist > 3. && sl+1 > 13 ){
222 n1 = 1.5; n2 = 0.3;
223 }
224 else if( sl+1 == 9 && ( ft == 2 || ft == 9 || ft == 15 || ft == 21 ) )
225 n1 = n2 = 3;
226 else if( ( sl+1 == 8 || sl+1 == 9 ) && rmsDist > 3.0 )
227 n1 = n2 = 2;
228 else if( sl+1 == 8 && ft == 13 )
229 n1 = n2 = 3;
230 else
231 n1 = n2 = 1.8;
232 }
233 else if( name == "HEC" ) n1 = n2 = 1.5;
234 if( name == "EMB"){
235 if( sl+1 == 9 || sl+1 == 10 ){
236 n1 = 3; n2 = 2;
237 }
238 else if( sl+1 >= 2 && sl+1 < 6 ){
239 n1 = 1.5; n2 = 2.5;
240 }
241 else if( sl+1 == 14 ){
242 n1 = 2; n2 = 1;
243 }
244 else
245 n1 = n2 = 1.8;
246 }
247
248 timefeb[
d][
ft][sl+1]->Fit(
"fit1",
"mE",
"N",
max-n1*rms,
max+n2*rms);
249 Fit_mean = fit1->GetParameter(1);
250 Fit_sigma = fit1->GetParameter(2);
251 Fit_error = fit1->GetParError(1);
252
253 median_error = 1.253*timefeb[
d][
ft][sl+1]->GetRMS()/sqrt(Hist_entries);
254
255
256 if( Hist_entries <= 50 ){
257 file <<
det <<
" " <<
d <<
" " <<
ft <<
" " << sl+1 <<
" " <<
Median[
d][
ft][sl+1] <<
" " << median_error << endl;
258 }
259 else if( gMinuit->fCstatu == "SUCCESSFUL" && Fit_error >= Fit_mean && Fit_sigma > 1.5*rmsDist ){
260 file <<
det <<
" " <<
d <<
" " <<
ft <<
" " << sl+1 <<
" " <<
Median[
d][
ft][sl+1] <<
" " << median_error << endl;
261 }
262 else if( gMinuit->fCstatu != "SUCCESSFUL" ){
263 file <<
det <<
" " <<
d <<
" " <<
ft <<
" " << sl+1 <<
" " <<
Median[
d][
ft][sl+1] <<
" " << median_error << endl;
264 }
265 else{
266 file <<
det <<
" " <<
d <<
" " <<
ft <<
" " << sl+1 <<
" " << Fit_mean <<
" " << Fit_error << endl;
267 }
268
269 }
270 }
271 }
272
273
276
277 return;
278
279}
std::vector< std::vector< double > > readTimingFiles(const std::string &file)
bool FileEmptyCheck(const std::string &fname)
double getTimeWeightedMedian(std::vector< double > time, const std::vector< double > &time2, const std::vector< double > &weight, double totalW)
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")
l
Printing final latex table to .tex output file.
TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)