47 {
48
49
50 char stmt1[1024];
51 int run_No =std::abs(
runNo);
52 sprintf(stmt1,
"select EQM_fileid,EMCGain from RunParams where run_number = %d",run_No);
53
54 DatabaseRecordVector results;
56 int rowNumber = m_dbsvc->query("run",stmt1,results);
57 if(rowNumber <= 0){
58 std::cout << "ERROR Read EQM_fileid from the Database, exit." << endreq;
59 exit(1);
60 }
61
62 int fileid = std::atoi((*results[0])["EQM_fileid"]);
63
64 string gainnum((*results[0])["EMCGain"]);
65
66 sprintf(stmt1,
"select OID,Position,Channel1,Channel2,Channel3,Channel4,Channel5,Channel6,Channel7,Channel8,Channel9,Channel10,Channel11,Channel12,Channel13,Channel14,Channel15,Channel16,Channel17,Channel18,Channel19,Channel20,Channel21,Channel22,Channel23,Channel24,Channel25,Channel26,Channel27,Channel28,Channel29,Channel30,Channel31,Channel32 from EQM where FileId=%d", fileid);
67
69 rowNumber = m_dbsvc->query("run",stmt1,results);
70 if(rowNumber <= 0){
71 std::cout << "ERROR Read EQM from the Database, exit." << endreq;
72 exit(1);
73 }
74
75 std::map<std::string, std::vector<std::string> > map_EQM;
76 map_EQM.clear();
77 for(int i=0;i<rowNumber;i++)
78 { for(int j=2;j<34;j++)
79 {
80 std::vector<std::string> vec_tmp;
81 vec_tmp.clear();
83 vec_tmp.push_back((*results[i])["OID"]);
84 vec_tmp.push_back((*results[i])["Position"]);
85 typedef pair<std::string, std::vector<std::string> > vpair;
86 map_EQM.insert(vpair((*results[i])[
"Channel"+
toString<int>(j-1)], vec_tmp));
87
88 }
89 }
90
91 vector<string>
id =
split(ids,
",",
"<null>");
92 id_num=id.size();
93
94 for(unsigned int m=0;m<id.size();m++){
95 if(id[m] == "0") { std::cout << " error: No." << m+1 << " id=0,please delete it! " << std::endl; break; }
96 if(id[m] == "NULL") { std::cout << " end of loop! " << std::endl; break; }
97 string channelnum,oid,modu;
98 bool if_found = false;
99 for(std::map<std::string,std::vector<std::string> >::iterator
iter = map_EQM.begin();
iter != map_EQM.end();
iter++)
100 {
101 if(
iter->first ==
id[m]) {
102 if_found = true;
103 channelnum =
iter->second[0];
104 oid =
iter->second[1];
105 modu =
iter->second[2];
106 }
107 }
108
109 if(!if_found) { std::cout << "can not find id " << id[m] << " in EQM, exit." << std::endl; exit(1); }
110
112 string trgcratenum;
113 for(int i=0;i<4;i++){
115 }
116
117
118 string a[16][2]={{"E3_1","96"},{"E2_0","97"},{"E2_1","98"},{"E1_0","99"},{"E1_1","100"},{"E3_0","101"},{"E2_2","102"},{"E3_2","103"},{"W3_1","112"},{"W2_0","113"},{"W2_1","114"},{"W1_0","115"},{"W1_1","116"},{"W3_0","117"},{"W2_2","118"},{"W3_2","119"}};
119 string trgCrate[16]={"0x60","0x61","0x62","0x63","0x64","0x65","0x66","0x67","0x70","0x71","0x72","0x73","0x74","0x75","0x76","0x77"};
120
121 for(int i=0;i<16;i++){
122 if(
b.compare(a[i][0]))
continue;
123 else {
124 trgcratenum = trgCrate[i];
125 }
126 }
127
128 std::string query_name = "select gain from EMC_Gain where run_id="+gainnum+" and ppc_id=\""+trgcratenum+"\" and Qmodule_no="+modu+" and Qchannel_no="+channelnum;
130 rowNumber = m_dbsvc->query("run",query_name.c_str(),results);
131 if(rowNumber <= 0){
132 std::cout << "ERROR Read gain from EMC_Gain Database, exit." << endreq;
133 exit(1);
134 }
135
136
137
138 trgGain[m] = new std::string((*results[0])["gain"]);
139
140 }
141 return true;
142 }
sprintf(cut,"kal_costheta0_em>-0.93&&kal_costheta0_em<0.93&&kal_pxy0_em>=0.05+%d*0.1&&kal_pxy0_em<0.15+%d*0.1&&NGch>=2", j, j)
std::vector< std::string > split(const std::string &src, std::string delimit, std::string null_subst="")
std::string toString(type obj)