25 {
26 if(argc<2){
27 cout << "plase append the old calibration const root file, Ex. insert_run_calib.exe old.root [runlist.txt]" << endl;
28 return 0;
29 }
31 TString str_runlist = "runlist.txt";
32 if(argc>=3) str_runlist = argv[2];
33 cout <<
"old file: " <<
str_old <<
" runlist file: " << str_runlist << endl;
35 TFile f_new("new.root","recreate");
38 if(!in){
39 cout << "cannot open runlist.txt" << endl;
40 return 0;
41 }
42 char str[255];
43 int in_runno(0);
44 int runno, evtfrom, evtto;
45 Double_t runmean, rungain, runresol;
46 while(in){
47 in.getline(str, 255);
48 sscanf(str ,"%d", &in_runno);
49 if(!in_runno) continue;
50 arr_tree[0]->SetBranchAddress(
"runno", &runno );
51 arr_tree[0]->SetBranchAddress(
"evtfrom", &evtfrom );
52 arr_tree[0]->SetBranchAddress(
"evtto", &evtto );
53 arr_tree[0]->SetBranchAddress(
"runmean", &runmean);
54 arr_tree[0]->SetBranchAddress(
"rungain", &rungain);
55 arr_tree[0]->SetBranchAddress(
"runresol", &runresol);
56 int min_diff(10000);
57 double temp_runmean(0), temp_rungain(0), temp_runresol(0);
58 for(Long64_t i=0; i<
arr_tree[0]->GetEntries(); i++){
60 if( ((runno-in_runno)<0 &&
abs(runno-in_runno)<=min_diff) || ((runno-in_runno)>0 &&
abs(runno-in_runno)<min_diff)){
61 min_diff =
abs(runno-in_runno);
62 temp_runmean = runmean;
63 temp_rungain = rungain;
64 temp_runresol = runresol;
65 }
66 }
67 runno = in_runno;
68 evtfrom = 0;
69 evtto = 1000000000;
70 runmean = temp_runmean;
71 rungain = temp_rungain;
72 runresol = temp_runresol;
73 cout << "runno " << runno << endl;
75 in_runno = 0;
76 }
77
78 f_new.cd();
80 f_new.Close();
81 f_old.Close();
82}
TString str_name_list[num_item]
TTree * arr_tree[num_item]