From 738c2f88939a041fbc8b6b9cfa3c547b86bc6e42 Mon Sep 17 00:00:00 2001 From: shivesh Date: Sat, 25 Aug 2018 17:57:22 +0100 Subject: Add Cerenkov Processes --- src/G4BeamTestRunManager.cxx.backup | 131 ++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/G4BeamTestRunManager.cxx.backup (limited to 'src/G4BeamTestRunManager.cxx.backup') diff --git a/src/G4BeamTestRunManager.cxx.backup b/src/G4BeamTestRunManager.cxx.backup new file mode 100644 index 0000000..5ed2e05 --- /dev/null +++ b/src/G4BeamTestRunManager.cxx.backup @@ -0,0 +1,131 @@ +// On Sun, to prevent conflict with ObjectSpace, G4Timer.hh has to be +// loaded *before* globals.hh... +#include "G4Timer.hh" + +#include "G4BeamTestRunManager.h" +#include +#include + + +G4BeamTestRunManager::G4BeamTestRunManager(): G4RunManager() +{ + +} + + +void G4BeamTestRunManager::BeamOn(G4int n_event,const char* macroFile,G4int n_select) +{ + G4String text = "BeamOn method is not supported in G4BeamTestRunManager!"; + G4Exception("G4BeamTestRunManager::BeamOn()", "G4BeamTestRunManager001", FatalException, text); +} + + +void G4BeamTestRunManager::InitializeRun() +{ + G4bool cond = ConfirmBeamOnCondition(); + if(cond) + { + // Reset the event counter + numberOfEventToBeProcessed = 0; + ConstructScoringWorlds(); + RunInitialization(); + + if(verboseLevel>0) timer->Start(); + } +} + + +void G4BeamTestRunManager::InjectParticle(G4ParticleGun* particleGun) +{ + if(!currentRun) + { + G4String text = "Run needs to be initialized before injecting a particle."; + G4Exception("G4BeamTestRunManager::InjectParticle()", "G4BeamTestRunManager002", FatalException, text); + } + assert(currentRun); // the G4Exception() above calls abort(). This assert() silences the clang static analyzer + + numberOfEventToBeProcessed++; + currentRun->SetNumberOfEventToBeProcessed(numberOfEventToBeProcessed); + + currentEvent = GenerateEvent(numberOfEventToBeProcessed); + particleGun->GeneratePrimaryVertex(currentEvent); + + eventManager->ProcessOneEvent(currentEvent); + AnalyzeEvent(currentEvent); + Update_Scoring(); + StackPreviousEvent(currentEvent); + currentEvent = 0; + + if(runAborted) TerminateRun(); +} + + +G4Event* G4BeamTestRunManager::GenerateEvent(G4int i_event) +{ + G4Event* anEvent = new G4Event(i_event); + + if(storeRandomNumberStatusToG4Event==1 || storeRandomNumberStatusToG4Event==3) + { + std::ostringstream oss; + CLHEP::HepRandom::saveFullState(oss); + randomNumberStatusForThisEvent = oss.str(); + anEvent->SetRandomNumberStatus(randomNumberStatusForThisEvent); + } + + if(storeRandomNumberStatus) + { + G4String fileN = randomNumberStatusDir + "currentEvent.rndm"; + CLHEP::HepRandom::saveEngineStatus(fileN); + } + + return anEvent; +} + + +void G4BeamTestRunManager::TerminateRun() +{ + if(verboseLevel>0) + { + timer->Stop(); + G4cout << "Run terminated." << G4endl; + G4cout << "Run Summary" << G4endl; + if(runAborted) + { + G4cout << " Run Aborted after " << numberOfEventToBeProcessed << " events processed." << G4endl; + } + else + { + G4cout << " Number of events processed : " << numberOfEventToBeProcessed << G4endl; + } + G4cout << " " << *timer << G4endl; + } + + RunTermination(); +} + + +// +// The following method is an exact copy of +// UpdateScoring which is private in the G4RunManager +// + +#include +#include +#include + +void G4BeamTestRunManager::Update_Scoring() +{ + G4ScoringManager* ScM = G4ScoringManager::GetScoringManagerIfExist(); + if(!ScM) return; + G4int nPar = ScM->GetNumberOfMesh(); + if(nPar<1) return; + + G4HCofThisEvent* HCE = currentEvent->GetHCofThisEvent(); + if(!HCE) return; + G4int nColl = HCE->GetCapacity(); + for(G4int i=0;iGetHC(i); + if(HC) ScM->Accumulate(HC); + } +} -- cgit v1.2.3