153 {
154
155 MsgStream log(
msgSvc(), name() );
156
157
158 system( "cat $BESEVTGENROOT/share/phokhara_10.0.fferr>phokhara_10.0.fferr" );
159
160
161 system( "cat $BESEVTGENROOT/share/phokhara_10.0.ffwarn>phokhara_10.0.ffwarn" );
162
163
164
165
166 if ( m_truthFile != "" ) { truth.open( m_truthFile.c_str() ); }
167 log << MSG::INFO << "EvtDecay initialize" << endmsg;
168 static const bool CREATEIFNOTTHERE( true );
169 StatusCode RndmStatus = service( "BesRndmGenSvc", p_BesRndmGenSvc, CREATEIFNOTTHERE );
170 if ( !RndmStatus.isSuccess() || 0 == p_BesRndmGenSvc )
171 {
172 log << MSG::ERROR << " Could not initialize Random Number Service" << endmsg;
173 return RndmStatus;
174 }
175
177 for ( int i = 0; i < m_mystring.size(); i++ )
179
182 std::vector<std::vector<int>> myivv;
183 std::vector<std::vector<double>> mydvv;
184
186
187 myivv.push_back( m_cluster0 );
188 myivv.push_back( m_cluster1 );
189 myivv.push_back( m_cluster2 );
190
191 mydvv.push_back( m_wind0 );
192 mydvv.push_back( m_wind1 );
193 mydvv.push_back( m_wind2 );
194
195 for ( int i = 0; i < myivv.size(); i++ )
196 {
197 std::vector<int> theivv;
198 for ( int j = 0; j < myivv[i].size(); j++ ) { theivv.push_back( myivv[i][j] ); }
200 }
201
202 for ( int i = 0; i < mydvv.size(); i++ )
203 {
204 std::vector<double> thedvv;
205 for ( int j = 0; j < mydvv[i].size(); j++ ) { thedvv.push_back( mydvv[i][j] ); }
207 }
208
209 if ( m_eBeamPolarization > 1 )
210 {
211 std::cout << "The e-beam polaziation should be in 0 to 1" << std::endl;
212 abort();
213 }
214 m_numberEvent = 0;
215 first = true;
216 m_ampscalflag = true;
217
218 CLHEP::HepRandomEngine* engine = p_BesRndmGenSvc->GetEngine( "EVTGEN" );
219 const long s = engine->getSeed();
220 p_BesRndmGenSvc->setGenseed(
s + 1 );
221
222 m_seeds.clear();
223 m_seeds.push_back(
s );
224 totalChannels = 0;
225
226
227
228 if ( m_DecayDec == "" )
229 {
230 m_DecayDec = getenv( "BESEVTGENROOT" );
231 m_DecayDec += "/share/DECAY.DEC";
232 }
233
234 if ( m_PdtTable == "" )
235 {
236 m_PdtTable = getenv( "BESEVTGENROOT" );
237 m_PdtTable += "/share/pdt.table";
238 }
239
240 char catcmd[300];
241 std::cout << "===================== user decay card ========================" << std::endl;
242 strcpy( catcmd, "cat " );
243 strcat( catcmd, userDecFileName.c_str() );
244 system( catcmd );
245
247
248
249 StatusCode status;
251 if ( status.isSuccess() )
252 {
253 log << MSG::INFO << "got the DataInfoSvc" << endmsg;
255 }
256 else
257 {
258 log << MSG::ERROR << "could not get the DataInfoSvc" << endmsg;
259 return StatusCode::FAILURE;
260 }
261
262 m_RandomEngine = new EvtBesRandom( engine );
263 m_Gen = new EvtGen( m_DecayDec.c_str(), m_PdtTable.c_str(), m_RandomEngine );
264
265 if ( userDecFileName == "NONE" )
266 log << MSG::INFO << "EvtDecay User did not define his Decay table EvtGen will use standart"
267 << endmsg;
268 if ( !( userDecFileName == "NONE" ) ) m_Gen->readUDecay( userDecFileName.c_str() );
269
270 if ( !( m_DecayTop == " " ) ) { outfile.open( m_DecayTop.c_str() ); }
271
272
273
274 if ( m_NtupleFile )
275 {
276 NTuplePtr nt1(
ntupleSvc(),
"MYROOTFILE/Trk" );
277 if ( nt1 ) { m_tuple = nt1; }
278 else
279 {
280 m_tuple =
281 ntupleSvc()->book(
"MYROOTFILE/Trk", CLID_ColumnWiseTuple,
"Generator-trk-Ntuple" );
282 if ( m_tuple )
283 {
284 status = m_tuple->addItem( "TotNumTrk", TotNumTrk, 0, 100 );
285 status = m_tuple->addIndexedItem( "Trk_index", TotNumTrk, m_Trk_index );
286 status = m_tuple->addIndexedItem( "m_px_trk", TotNumTrk, m_px_trk );
287 status = m_tuple->addIndexedItem( "m_py_trk", TotNumTrk, m_py_trk );
288 status = m_tuple->addIndexedItem( "m_pz_trk", TotNumTrk, m_pz_trk );
289 status = m_tuple->addIndexedItem( "m_en_trk", TotNumTrk, m_en_trk );
290 status = m_tuple->addIndexedItem( "FST", TotNumTrk, m_fst );
291
292 status = m_tuple->addItem( "nchr", m_nchr );
293 status = m_tuple->addItem( "nchr_e", m_nchr_e );
294 status = m_tuple->addItem( "nchr_mu", m_nchr_mu );
295 status = m_tuple->addItem( "nchr_pi", m_nchr_pi );
296 status = m_tuple->addItem( "nchr_k", m_nchr_k );
297 status = m_tuple->addItem( "nchr_p", m_nchr_p );
298 status = m_tuple->addItem( "N_gamma", m_gamma );
299 status = m_tuple->addItem( "N_gammaFSR", m_gammaFSR );
300 status = m_tuple->addItem( "Flag1", m_flag1 );
301 }
302 else
303 {
304 log << MSG::ERROR << " Cannot book N-tuple:" << long( m_tuple ) << endmsg;
305 return StatusCode::FAILURE;
306 }
307 }
308
309 NTuplePtr nt2(
ntupleSvc(),
"MYROOTFILE/mass" );
310 if ( nt2 ) { mass_tuple = nt2; }
311 else
312 {
313 mass_tuple =
ntupleSvc()->book(
"MYROOTFILE/mass", CLID_ColumnWiseTuple,
314 "Generator-mass-Ntuple" );
315 if ( mass_tuple )
316 {
317 status = mass_tuple->addItem( "m12", m_m12 );
318 status = mass_tuple->addItem( "m13", m_m13 );
319 status = mass_tuple->addItem( "m23", m_m23 );
320 status = mass_tuple->addItem( "m1", m_m1 );
321 status = mass_tuple->addItem( "m2", m_m2 );
322 status = mass_tuple->addItem( "m3", m_m3 );
323 status = mass_tuple->addItem( "costheta1", m_cos1 );
324 status = mass_tuple->addItem( "costheta2", m_cos2 );
325 status = mass_tuple->addItem( "costheta3", m_cos3 );
326 status = mass_tuple->addItem( "ichannel", m_ich );
327 }
328 else
329 {
330 log << MSG::ERROR << " Cannot book N-tuple:" << long( m_tuple ) << endmsg;
331 return StatusCode::FAILURE;
332 }
333 }
334
335 NTuplePtr nt3(
ntupleSvc(),
"MYROOTFILE/massGen" );
336 if ( nt3 ) { massgen_tuple = nt3; }
337 else
338 {
339 massgen_tuple =
ntupleSvc()->book(
"MYROOTFILE/massGen", CLID_ColumnWiseTuple,
340 "Generator-mass-Ntuple" );
341 if ( massgen_tuple )
342 {
343 status = massgen_tuple->addItem( "m12", _m12 );
344 status = massgen_tuple->addItem( "m13", _m13 );
345 status = massgen_tuple->addItem( "m23", _m23 );
346 status = massgen_tuple->addItem( "m1", _m1 );
347 status = massgen_tuple->addItem( "m2", _m2 );
348 status = massgen_tuple->addItem( "m3", _m3 );
349 status = massgen_tuple->addItem( "costheta1", _cos1 );
350 status = massgen_tuple->addItem( "costheta2", _cos2 );
351 status = massgen_tuple->addItem( "costheta3", _cos3 );
352 status = massgen_tuple->addItem( "ichannel", _ich );
353 }
354 else
355 {
356 log << MSG::ERROR << " Cannot book N-tuple:" << long( m_tuple ) << endmsg;
357 return StatusCode::FAILURE;
358 }
359 }
360 }
361 for ( int i = 0; i < 500; i++ ) { br[i] = 0; }
362 if ( !( m_SB3File == "" && m_SB3HT == "" ) )
363 {
364 const char *filename, *histitle;
365 filename = (char*)m_SB3File.c_str();
366 histitle = (char*)m_SB3HT.c_str();
367 SuperBody3decay.setFile( filename );
368 SuperBody3decay.setHTitle( histitle );
369 SuperBody3decay.init();
370 }
371
372 return StatusCode::SUCCESS;
373}
IDataInfoSvc * dataInfoSvc
static std::vector< std::string > SV
static std::vector< std::vector< double > > dVV
static std::vector< std::vector< int > > iVV