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