#include <BesEventAction.hh>
Public Member Functions | |
BesEventAction (BesRunAction *) | |
virtual | ~BesEventAction () |
virtual void | BeginOfEventAction (const G4Event *) |
virtual void | EndOfEventAction (const G4Event *) |
Private Attributes | |
BesRunAction * | m_runAction |
G4DigiManager * | m_DM |
RealizationSvc * | m_RealizationSvc |
Definition at line 14 of file BesEventAction.hh.
BesEventAction::BesEventAction | ( | BesRunAction * | ) |
Definition at line 36 of file BesEventAction.cc.
References ReadBoostRoot::GetEmc(), ReadBoostRoot::GetMdc(), ReadBoostRoot::GetMuc(), ReadBoostRoot::GetTof(), m_DM, and m_RealizationSvc.
00037 :m_runAction(runAction) 00038 { 00039 ISvcLocator* svcLocator = Gaudi::svcLocator(); 00040 IRealizationSvc *tmpReal; 00041 StatusCode sc = svcLocator->service("RealizationSvc",tmpReal); 00042 if (!sc.isSuccess()) 00043 { 00044 std::cout << " Could not initialize Realization Service in BesEventAction" << std::endl; 00045 } else { 00046 m_RealizationSvc=dynamic_cast<RealizationSvc*>(tmpReal); 00047 } 00048 00049 m_DM = G4DigiManager::GetDMpointer(); 00050 00051 if (ReadBoostRoot::GetMdc()) 00052 { 00053 BesMdcDigitizer* mdcDM = new BesMdcDigitizer("BesMdcDigitizer"); 00054 m_DM->AddNewModule(mdcDM); 00055 } 00056 if (ReadBoostRoot::GetTof()) 00057 { 00058 BesTofDigitizer* tofDM = new BesTofDigitizer("BesTofDigitizer"); 00059 m_DM->AddNewModule(tofDM); 00060 } 00061 if (ReadBoostRoot::GetEmc()) 00062 { 00063 BesEmcDigitizer* emcDM = new BesEmcDigitizer("BesEmcDigitizer"); 00064 m_DM->AddNewModule(emcDM); 00065 } 00066 if (ReadBoostRoot::GetMuc()) 00067 { 00068 BesMucDigitizer* mucDM = new BesMucDigitizer("BesMucDigitizer"); 00069 m_DM->AddNewModule(mucDM); 00070 } 00071 00072 }
BesEventAction::~BesEventAction | ( | ) | [virtual] |
void BesEventAction::BeginOfEventAction | ( | const G4Event * | ) | [virtual] |
Definition at line 79 of file BesEventAction.cc.
References BesSensitiveManager::BeginOfTruthEvent(), BesRunAction::GetMCTruthFlag(), BesSensitiveManager::GetSensitiveManager(), and m_runAction.
00080 { 00081 00082 G4int eventId = evt->GetEventID(); 00083 //if (eventId%5000==0) 00084 // G4cout<<"---> Begin of event: "<<eventId<<G4endl; 00085 00086 G4UImanager* uiMgr = G4UImanager::GetUIpointer(); 00087 //if(eventId == 46 || eventId == 75) 00088 // uiMgr->ApplyCommand("/tracking/verbose 1"); 00089 //else 00090 // uiMgr->ApplyCommand("/tracking/verbose 0"); 00091 00092 //mc truth 00093 if (m_runAction) 00094 if (m_runAction->GetMCTruthFlag()!=0) 00095 { 00096 BesSensitiveManager* sensitiveManager = BesSensitiveManager::GetSensitiveManager(); 00097 sensitiveManager->BeginOfTruthEvent(evt); 00098 } 00099 }
void BesEventAction::EndOfEventAction | ( | const G4Event * | ) | [virtual] |
Definition at line 101 of file BesEventAction.cc.
References BesSensitiveManager::ClearEvent(), BesSensitiveManager::EndOfTruthEvent(), BesRunAction::GetAsciiIO(), ReadBoostRoot::GetEmc(), ReadBoostRoot::GetFormatAR(), ReadBoostRoot::GetHitOut(), BesRunAction::GetMCTruthFlag(), ReadBoostRoot::GetMdc(), ReadBoostRoot::GetMuc(), BesTuningIO::GetNextEvents(), BesTuningIO::GetRootEvent(), BesRunAction::GetRunId(), RealizationSvc::getRunId(), BesSensitiveManager::GetSensitiveManager(), BesRunAction::GetTDSWriter(), ReadBoostRoot::GetTof(), ReadBoostRoot::GetTuning(), genRecEmupikp::i, m_DM, m_RealizationSvc, m_runAction, BesTDSWriter::SaveAll(), BesAsciiIO::SaveAsciiEvents(), BesAsciiIO::SaveHitAsciiEvents(), BesRootIO::SaveHitRootEvent(), and RealizationSvc::UseDBFlag().
00102 { 00103 if (G4VVisManager::GetConcreteInstance()) 00104 { 00105 G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); 00106 G4int n_trajectories = 0; 00107 if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); 00108 00109 for (G4int i=0; i<n_trajectories; i++) 00110 { 00111 G4Trajectory* trj = (G4Trajectory*) 00112 ((*(evt->GetTrajectoryContainer()))[i]); 00113 00114 trj->DrawTrajectory(50); 00115 00116 } 00117 } 00118 00119 //mc truth 00120 BesSensitiveManager* sensitiveManager = BesSensitiveManager::GetSensitiveManager(); 00121 if (m_runAction) 00122 if (m_runAction->GetMCTruthFlag()!=0) 00123 { 00124 sensitiveManager->EndOfTruthEvent(evt); 00125 } 00126 00127 if (ReadBoostRoot::GetHitOut()){ 00128 if (m_runAction) 00129 { 00130 //Ascii I/O, output hit collections 00131 BesAsciiIO* asciiIO = m_runAction->GetAsciiIO(); 00132 if (asciiIO) { 00133 if (m_RealizationSvc->UseDBFlag() == true) asciiIO->SaveHitAsciiEvents(m_RealizationSvc->getRunId(), evt); 00134 else asciiIO->SaveHitAsciiEvents(m_runAction->GetRunId(), evt); 00135 } 00136 00137 //Root I/O, output MdcHit collections 00138 BesRootIO* rootIO = m_runAction->GetRootIO(); 00139 if (rootIO){ 00140 //emc digitization 00141 if (ReadBoostRoot::GetEmc()) m_DM->Digitize("BesEmcDigitizer"); 00142 00143 if (m_RealizationSvc->UseDBFlag() == true) rootIO->SaveHitRootEvent(m_RealizationSvc->getRunId(), evt); 00144 else rootIO->SaveHitRootEvent(m_runAction->GetRunId(), evt); 00145 } 00146 } 00147 }else{ 00148 //Tuning I/O 00149 if (ReadBoostRoot::GetTuning()){ 00150 if (m_runAction) 00151 { 00152 BesTuningIO* tuningIO = m_runAction->GetTuningIO(); 00153 if (tuningIO){ 00154 if (ReadBoostRoot::GetFormatAR()) 00155 { 00156 tuningIO->GetRootEvent(evt->GetEventID()); 00157 } 00158 else{ 00159 tuningIO->GetNextEvents(); 00160 } 00161 } 00162 00163 } 00164 } 00165 //mdc digitization 00166 00167 if (ReadBoostRoot::GetMdc()) 00168 m_DM->Digitize("BesMdcDigitizer"); 00169 00170 //tof digitization 00171 if (ReadBoostRoot::GetTof()) 00172 m_DM->Digitize("BesTofDigitizer"); 00173 00174 //emc digitization 00175 if ((!ReadBoostRoot::GetTuning())&&ReadBoostRoot::GetEmc()) 00176 m_DM->Digitize("BesEmcDigitizer"); 00177 00178 //muc digitization 00179 if (ReadBoostRoot::GetMuc()) 00180 m_DM->Digitize("BesMucDigitizer"); 00181 00182 00183 if (m_runAction) 00184 { 00185 //Ascii I/O, output digi collections 00186 BesAsciiIO* asciiIO = m_runAction->GetAsciiIO(); 00187 if (asciiIO) 00188 { 00189 if (m_RealizationSvc->UseDBFlag() == true) asciiIO->SaveAsciiEvents(m_RealizationSvc->getRunId(), evt); 00190 else asciiIO->SaveAsciiEvents(m_runAction->GetRunId(), evt); 00191 } 00192 00193 // Root I/O,output digi collections 00194 BesTDSWriter* tdsWriter = m_runAction->GetTDSWriter(); 00195 if (tdsWriter) 00196 { 00197 if (m_RealizationSvc->UseDBFlag() == true) tdsWriter->SaveAll(evt, m_RealizationSvc->getRunId() ); 00198 else tdsWriter->SaveAll(evt, m_runAction->GetRunId() ); 00199 } 00200 } 00201 } 00202 00203 sensitiveManager->ClearEvent(); 00204 //HepRandom::saveEngineStatus("EndSimCurrEvt.rndm"); 00205 }
G4DigiManager* BesEventAction::m_DM [private] |
Definition at line 28 of file BesEventAction.hh.
Referenced by BesEventAction(), EndOfEventAction(), and ~BesEventAction().
RealizationSvc* BesEventAction::m_RealizationSvc [private] |
Definition at line 30 of file BesEventAction.hh.
Referenced by BesEventAction(), and EndOfEventAction().
BesRunAction* BesEventAction::m_runAction [private] |
Definition at line 26 of file BesEventAction.hh.
Referenced by BeginOfEventAction(), and EndOfEventAction().