81 MsgStream log(
msgSvc(), name() );
82 log << MSG::INFO <<
"initialize()" << endmsg;
87 static const bool CREATEIFNOTTHERE(
true );
88 StatusCode RndmStatus = service(
"BesRndmGenSvc", p_BesRndmGenSvc, CREATEIFNOTTHERE );
89 if ( !RndmStatus.isSuccess() || 0 == p_BesRndmGenSvc )
91 log << MSG::ERROR <<
" Could not initialize Random Number Service" << endmsg;
97 status = service(
"G4Svc", tmpSvc );
98 if ( status.isSuccess() )
100 log << MSG::INFO <<
"got the G4Svc" << endmsg;
106 log << MSG::ERROR <<
"could not get the G4Svc" << endmsg;
107 return StatusCode::FAILURE;
111 StatusCode sc_det = service(
"DetVerSvc",
detVerSvc );
112 if ( sc_det.isFailure() )
114 log << MSG::ERROR <<
"can't retrieve DetVerSvc instance" << endmsg;
119 log << MSG::INFO <<
"** ~~~ZZZ~~~ ** : retrieved DetectorStage = " << phase << endmsg;
123 if ( phase > 2 ) { m_tof = 4; }
134 log << MSG::INFO <<
"Four sub-detector construction flags: " << m_mdc <<
" " << m_tof <<
" "
135 << m_emc <<
" " << m_muc << endmsg;
138 new ReadBoostRoot( m_mdc, m_tof, m_emc, m_muc, m_field, m_formatAR, m_tuning, m_hitOut );
142 log << MSG::INFO <<
"Instantiating BESIII Detector" << endmsg;
145 sensitiveManager->
SetLogLevel( m_G4Svc->LogLevel() );
148 detectorConstruction->
SetPipeSCM( m_pipeSCM );
149 m_G4Svc->SetUserInitialization( detectorConstruction );
151 switch ( m_physicsList )
153 case 1: m_G4Svc->SetUserInitialization(
new QBBC );
break;
154 case 2: m_G4Svc->SetUserInitialization(
new QGS_BIC );
break;
155 case 3: m_G4Svc->SetUserInitialization(
new QGSP_BERT );
break;
156 case 4: m_G4Svc->SetUserInitialization(
new QGSP_BERT_HP );
break;
157 case 5: m_G4Svc->SetUserInitialization(
new QGSP_BIC_AllHP );
break;
158 case 6: m_G4Svc->SetUserInitialization(
new QGSP_BIC );
break;
159 case 7: m_G4Svc->SetUserInitialization(
new FTF_BIC );
break;
160 case 8: m_G4Svc->SetUserInitialization(
new FTFP_BERT_ATL );
break;
161 case 9: m_G4Svc->SetUserInitialization(
new FTFP_BERT );
break;
162 case 10: m_G4Svc->SetUserInitialization(
new FTFP_BERT_HP );
break;
163 case 11: m_G4Svc->SetUserInitialization(
new FTFP_BERT_TRV );
break;
164 case 12: m_G4Svc->SetUserInitialization(
new FTFQGSP_BERT );
break;
165 default: m_G4Svc->SetUserInitialization(
new FTFP_BERT );
break;
177 m_G4Svc->SetUserInitialization( actionInit );
207 return StatusCode::SUCCESS;
276 MsgStream log(
msgSvc(), name() );
277 NTuplePtr nt1(
ntupleSvc(),
"FILE802/n1" );
278 NTuple::Tuple* tupleTof1;
279 if ( nt1 ) tupleTof1 = nt1;
282 tupleTof1 =
ntupleSvc()->book(
"FILE802/n1", CLID_ColumnWiseTuple,
"BesSim" );
283 m_G4Svc->SetTupleTof1( tupleTof1 );
285 NTuplePtr nt2(
ntupleSvc(),
"FILE802/n2" );
286 NTuple::Tuple* tupleTof2;
287 if ( nt2 ) tupleTof2 = nt2;
290 tupleTof2 =
ntupleSvc()->book(
"FILE802/n2", CLID_ColumnWiseTuple,
"BesSim" );
291 m_G4Svc->SetTupleTof2( tupleTof2 );
293 NTuplePtr nt3(
ntupleSvc(),
"FILE802/n3" );
294 NTuple::Tuple* tupleTof3;
295 if ( nt3 ) tupleTof3 = nt3;
298 tupleTof3 =
ntupleSvc()->book(
"FILE802/n3", CLID_ColumnWiseTuple,
"BesSim" );
299 m_G4Svc->SetTupleTof3( tupleTof3 );
310 return StatusCode::SUCCESS;