#include <BesEventAction.hh>
Public Member Functions | |
virtual void | BeginOfEventAction (const G4Event *) |
virtual void | BeginOfEventAction (const G4Event *) |
BesEventAction (BesRunAction *) | |
BesEventAction (BesRunAction *) | |
virtual void | EndOfEventAction (const G4Event *) |
virtual void | EndOfEventAction (const G4Event *) |
virtual | ~BesEventAction () |
virtual | ~BesEventAction () |
Private Attributes | |
G4DigiManager * | m_DM |
G4DigiManager * | m_DM |
RealizationSvc * | m_RealizationSvc |
RealizationSvc * | m_RealizationSvc |
BesRunAction * | m_runAction |
BesRunAction * | m_runAction |
|
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 }
|
|
00075 { 00076 }
|
|
|
|
|
|
|
|
00079 { 00080 00081 G4int eventId = evt->GetEventID(); 00082 //if (eventId%5000==0) 00083 // G4cout<<"---> Begin of event: "<<eventId<<G4endl; 00084 00085 G4UImanager* uiMgr = G4UImanager::GetUIpointer(); 00086 //if(eventId == 46 || eventId == 75) 00087 // uiMgr->ApplyCommand("/tracking/verbose 1"); 00088 //else 00089 // uiMgr->ApplyCommand("/tracking/verbose 0"); 00090 00091 //mc truth 00092 if (m_runAction) 00093 if (m_runAction->GetMCTruthFlag()!=0) 00094 { 00095 BesSensitiveManager* sensitiveManager = BesSensitiveManager::GetSensitiveManager(); 00096 sensitiveManager->BeginOfTruthEvent(evt); 00097 } 00098 }
|
|
|
|
00101 { 00102 if (G4VVisManager::GetConcreteInstance()) 00103 { 00104 G4TrajectoryContainer* trajectoryContainer = evt->GetTrajectoryContainer(); 00105 G4int n_trajectories = 0; 00106 if (trajectoryContainer) n_trajectories = trajectoryContainer->entries(); 00107 00108 for (G4int i=0; i<n_trajectories; i++) 00109 { 00110 G4Trajectory* trj = (G4Trajectory*) 00111 ((*(evt->GetTrajectoryContainer()))[i]); 00112 00113 trj->DrawTrajectory(50); 00114 00115 } 00116 } 00117 00118 //mc truth 00119 BesSensitiveManager* sensitiveManager = BesSensitiveManager::GetSensitiveManager(); 00120 if (m_runAction) 00121 if (m_runAction->GetMCTruthFlag()!=0) 00122 { 00123 sensitiveManager->EndOfTruthEvent(evt); 00124 } 00125 00126 if (ReadBoostRoot::GetHitOut()){ 00127 if (m_runAction) 00128 { 00129 //Ascii I/O, output hit collections 00130 BesAsciiIO* asciiIO = m_runAction->GetAsciiIO(); 00131 if (asciiIO) { 00132 if (m_RealizationSvc->UseDBFlag() == true) asciiIO->SaveHitAsciiEvents(m_RealizationSvc->getRunId(), evt); 00133 else asciiIO->SaveHitAsciiEvents(m_runAction->GetRunId(), evt); 00134 } 00135 00136 //Root I/O, output MdcHit collections 00137 BesRootIO* rootIO = m_runAction->GetRootIO(); 00138 if (rootIO){ 00139 //emc digitization 00140 if (ReadBoostRoot::GetEmc()) m_DM->Digitize("BesEmcDigitizer"); 00141 00142 if (m_RealizationSvc->UseDBFlag() == true) rootIO->SaveHitRootEvent(m_RealizationSvc->getRunId(), evt); 00143 else rootIO->SaveHitRootEvent(m_runAction->GetRunId(), evt); 00144 } 00145 } 00146 }else{ 00147 //Tuning I/O 00148 if (ReadBoostRoot::GetTuning()){ 00149 if (m_runAction) 00150 { 00151 BesTuningIO* tuningIO = m_runAction->GetTuningIO(); 00152 if (tuningIO){ 00153 if (ReadBoostRoot::GetFormatAR()) 00154 { 00155 tuningIO->GetRootEvent(evt->GetEventID()); 00156 } 00157 else{ 00158 tuningIO->GetNextEvents(); 00159 } 00160 } 00161 00162 } 00163 } 00164 //mdc digitization 00165 00166 if (ReadBoostRoot::GetMdc()) 00167 m_DM->Digitize("BesMdcDigitizer"); 00168 00169 //tof digitization 00170 if (ReadBoostRoot::GetTof()) 00171 m_DM->Digitize("BesTofDigitizer"); 00172 00173 //emc digitization 00174 if ((!ReadBoostRoot::GetTuning())&&ReadBoostRoot::GetEmc()) 00175 m_DM->Digitize("BesEmcDigitizer"); 00176 00177 //muc digitization 00178 if (ReadBoostRoot::GetMuc()) 00179 m_DM->Digitize("BesMucDigitizer"); 00180 00181 00182 if (m_runAction) 00183 { 00184 //Ascii I/O, output digi collections 00185 BesAsciiIO* asciiIO = m_runAction->GetAsciiIO(); 00186 if (asciiIO) 00187 { 00188 if (m_RealizationSvc->UseDBFlag() == true) asciiIO->SaveAsciiEvents(m_RealizationSvc->getRunId(), evt); 00189 else asciiIO->SaveAsciiEvents(m_runAction->GetRunId(), evt); 00190 } 00191 00192 // Root I/O,output digi collections 00193 BesTDSWriter* tdsWriter = m_runAction->GetTDSWriter(); 00194 if (tdsWriter) 00195 { 00196 if (m_RealizationSvc->UseDBFlag() == true) tdsWriter->SaveAll(evt, m_RealizationSvc->getRunId() ); 00197 else tdsWriter->SaveAll(evt, m_runAction->GetRunId() ); 00198 } 00199 } 00200 } 00201 00202 sensitiveManager->ClearEvent(); 00203 //HepRandom::saveEngineStatus("EndSimCurrEvt.rndm"); 00204 }
|
|
|
|
|
|
|
|
|
|
|
|
|