Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

BesEventAction Class Reference

#include <BesEventAction.hh>

List of all members.

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
RealizationSvcm_RealizationSvc
RealizationSvcm_RealizationSvc
BesRunActionm_runAction
BesRunActionm_runAction


Constructor & Destructor Documentation

BesEventAction::BesEventAction BesRunAction  ) 
 

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]
 

00075 {
00076 }

BesEventAction::BesEventAction BesRunAction  ) 
 

virtual BesEventAction::~BesEventAction  )  [virtual]
 


Member Function Documentation

virtual void BesEventAction::BeginOfEventAction const G4Event *   )  [virtual]
 

void BesEventAction::BeginOfEventAction const G4Event *   )  [virtual]
 

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 }

virtual void BesEventAction::EndOfEventAction const G4Event *   )  [virtual]
 

void BesEventAction::EndOfEventAction const G4Event *   )  [virtual]
 

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 }


Member Data Documentation

G4DigiManager* BesEventAction::m_DM [private]
 

G4DigiManager* BesEventAction::m_DM [private]
 

RealizationSvc* BesEventAction::m_RealizationSvc [private]
 

RealizationSvc* BesEventAction::m_RealizationSvc [private]
 

BesRunAction* BesEventAction::m_runAction [private]
 

BesRunAction* BesEventAction::m_runAction [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 15:52:26 2011 for BOSS6.5.5 by  doxygen 1.3.9.1