Standard constructor.
124 :
125 m_pSelector(pSelector), m_firstEvent(true), m_lumiBlockNo(0), m_initEventNo(0) {
126
127
128 SmartIF<IProperty> prpMgr(Gaudi::svcLocator());
129 if ( ! prpMgr.isValid() ) {
130 std::cout << "IProperty interface not found in ApplicationMgr." << std::endl;
131 }
132 else {
133 m_appMgrProperty = prpMgr;
134 }
135
136 ISvcLocator* svcLocator = Gaudi::svcLocator();
138 StatusCode status = svcLocator->service("RealizationSvc", tmpReal);
139 if (!status.isSuccess())
140 {
141 std::cout << " Could not initialize Realization Service" << std::endl;
142 } else {
144 }
145
148 status = svcLocator->service("DataInfoSvc",tmpInfoSvc);
149 if (status.isSuccess()) {
150 std::cout << "get the DataInfoSvc" << std::endl;
151 jobInfoSvc=
dynamic_cast<DataInfoSvc *
>(tmpInfoSvc);
152 }else {
153 std::cout << "could not get the DataInfoSvc." << std::endl;
154 }
155
156
158
159 std::string sMax;
160 status = m_appMgrProperty->getProperty("EvtMax", sMax);
161 int EvtMax = std::atoi(sMax.c_str());
162
163 if(m_RealizationSvc->
UseDBFlag() ==
true) {
164 std::vector<int> totEvtNo;
165 totEvtNo.clear();
166 std::vector<float> lumi;
167 std::vector<int> tmp_runList = m_RealizationSvc->
getRunList();
168 float totLumi = 0;
169 for(unsigned int i = 0; i < tmp_runList.size(); i++)
170 {
171 float lumi_value = m_RealizationSvc->
getLuminosity(tmp_runList[i]);
172 lumi.push_back(lumi_value);
173 totLumi += lumi_value;
174 }
175
176 m_runList.clear();
177
178 int totSimEvt = 0;
179 int evtSubNo = 0;
180 if(totLumi != 0) {
181 for(unsigned int i = 0; i < lumi.size(); i++) {
182
183 double ratio = lumi[i]/totLumi*EvtMax;
184 evtSubNo = int (ratio);
185 if((ratio-evtSubNo) >= 0.5) evtSubNo = evtSubNo + 1;
186 totSimEvt += evtSubNo;
187 if(evtSubNo == 0) {
188 std::cout << "The run " <<tmp_runList[i]<<" is not simulated, due to the luminosity is too small!" << std::endl;
189 }
190 else {
191
192 m_evtNoList.push_back(evtSubNo);
193 m_runList.push_back(tmp_runList[i]);
194 totEvtNo.push_back(tmp_runList[i]);
195 totEvtNo.push_back(evtSubNo);
196 }
197 std::cout <<"Total "<< evtSubNo <<" events need to be simulated in run " <<tmp_runList[i]<< std::endl;
198 }
199
200 if((EvtMax - totSimEvt) != 0) {
201 unsigned int effRunSize = m_evtNoList.size();
202 if(effRunSize > 0) {
203 m_evtNoList[effRunSize - 1] = m_evtNoList[effRunSize - 1] + (EvtMax - totSimEvt);
204 effRunSize = totEvtNo.size();
205 totEvtNo[effRunSize - 1] = totEvtNo[effRunSize - 1] + (EvtMax - totSimEvt);
206 std::cout <<"Additional "<< EvtMax - totSimEvt <<" events need to be simulated in run " << m_runList[m_runList.size() - 1]<< std::endl;
207 }
208 else {
209 bool found = false;
210 for(unsigned int i = 0; i < lumi.size(); i++) {
211 if(lumi[i] > 0) {
212 m_evtNoList.push_back(EvtMax - totSimEvt);
213 m_runList.push_back(tmp_runList[i]);
214 totEvtNo.push_back(tmp_runList[i]);
215 totEvtNo.push_back(EvtMax - totSimEvt);
216 found = true;
217 std::cout <<"The max event number maybe too small, all "<< evtSubNo <<" events need to be simulated in run " <<tmp_runList[i]<< std::endl;
218 break;
219 }
220 }
221 if(!found) {
222 std::cerr << "ERORR: " << "Total luminosity is ZERO, please check your run list. " << std::endl;
223 std::exit(0);
224 }
225 }
226 }
227 }
228 else {
229 std::cerr << "ERORR: " << "Total luminosity is ZERO!!! Please check your run list. " << std::endl;
230 std::exit(0);
231 }
232 m_RealizationSvc->
setRunId(-std::abs(m_runList[0]));
234 m_initRunNo = -std::abs(m_runList[0]);
236 }
237 else {
238 m_initRunNo = -std::abs((m_RealizationSvc->
getRunList())[0]);
239 }
240}
void setTotEvtNo(std::vector< int > i)
std::vector< int > getRunList()