BesEventAction Class Reference

#include <BesEventAction.hh>

List of all members.

Public Member Functions

 BesEventAction (BesRunAction *)
virtual ~BesEventAction ()
virtual void BeginOfEventAction (const G4Event *)
virtual void EndOfEventAction (const G4Event *)

Private Attributes

BesRunActionm_runAction
G4DigiManager * m_DM
RealizationSvcm_RealizationSvc


Detailed Description

Definition at line 14 of file BesEventAction.hh.


Constructor & Destructor Documentation

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]

Definition at line 74 of file BesEventAction.cc.

References m_DM.

00075 {
00076   delete m_DM;
00077 }


Member Function Documentation

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 }


Member Data Documentation

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().


Generated on Tue Nov 29 23:17:31 2016 for BOSS_7.0.2 by  doxygen 1.4.7