Skip to content
Snippets Groups Projects
Commit 72c4ad76 authored by Chad Lantz's avatar Chad Lantz
Browse files

Added TestBeam2021PrimaryGenerator skeloten to be implemented by Hongbo

parent 8a8dc802
No related branches found
No related tags found
No related merge requests found
......@@ -33,6 +33,7 @@
#include "G4VUserPrimaryGeneratorAction.hh"
#include "PrimaryGeneratorMessenger.hh"
#include "TestBeam2021PrimaryGenerator.hh"
#include "G4ParticleGun.hh"
#include "G4IonTable.hh"
#include "globals.hh"
......@@ -85,6 +86,7 @@ class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
private:
G4GeneralParticleSource* fParticleGun;
PrimaryGeneratorMessenger* fGeneratorMessenger;
TestBeam2021PrimaryGenerator* fTestBeam2021PrimaryGenerator;
G4String fBeamType;
G4String fGenInputFile;
......
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file TestBeam2021PrimaryGenerator.hh
/// \brief Definition of the TestBeam2021PrimaryGenerator class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#ifndef TestBeam2021PrimaryGenerator_h
#define TestBeam2021PrimaryGenerator_h 1
#include "G4VPrimaryGenerator.hh"
#include "DetectorConstruction.hh"
class G4Event;
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
class TestBeam2021PrimaryGenerator : public G4VPrimaryGenerator
{
public:
TestBeam2021PrimaryGenerator();
~TestBeam2021PrimaryGenerator();
public:
virtual void GeneratePrimaryVertex(G4Event*);
Alignment m_alignment;
};
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#endif
......@@ -41,7 +41,7 @@
#General beam parameters
- <b>/beam/type</b>
- Set the beam environment. Options are LHC, FNAL or SPS
- Set the beam environment. Options are LHC, FNAL, SPS, or TB2021
- <b>/beam/pos</b>
- Set the origin of the beam particles
......@@ -162,6 +162,7 @@ PrimaryGeneratorAction::PrimaryGeneratorAction()
fGeneratorMessenger = new PrimaryGeneratorMessenger(this);
fParticleGun = new G4GeneralParticleSource();
m_analysisManager = AnalysisManager::getInstance();
fTestBeam2021PrimaryGenerator = new TestBeam2021PrimaryGenerator();
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
......@@ -170,6 +171,7 @@ PrimaryGeneratorAction::~PrimaryGeneratorAction()
{
delete fGeneratorMessenger;
delete fParticleGun;
delete fTestBeam2021PrimaryGenerator;
if( INPUT_INITIALIZED ){
eventGenFile->Close();
......@@ -195,6 +197,8 @@ void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent){
GenerateSPSEvent(anEvent);
else if(fBeamType == "fnal")
GenerateFNALEvent(anEvent);
else if(fBeamType == "tb2021")
fTestBeam2021PrimaryGenerator->GeneratePrimaryVertex(anEvent);
else{
G4cerr << "\nInvalid beam type selection. Aborting event\n" << G4endl;
anEvent->SetEventAborted();
......
//
// ********************************************************************
// * License and Disclaimer *
// * *
// * The Geant4 software is copyright of the Copyright Holders of *
// * the Geant4 Collaboration. It is provided under the terms and *
// * conditions of the Geant4 Software License, included in the file *
// * LICENSE and available at http://cern.ch/geant4/license . These *
// * include a list of copyright holders. *
// * *
// * Neither the authors of this software system, nor their employing *
// * institutes,nor the agencies providing financial support for this *
// * work make any representation or warranty, express or implied, *
// * regarding this software system or assume any liability for its *
// * use. Please see the license in the file LICENSE and URL above *
// * for the full disclaimer and the limitation of liability. *
// * *
// * This code implementation is the result of the scientific and *
// * technical work of the GEANT4 collaboration. *
// * By using, copying, modifying or distributing the software (or *
// * any work based on the software) you agree to acknowledge its *
// * use in resulting scientific publications, and indicate your *
// * acceptance of all terms of the Geant4 Software license. *
// ********************************************************************
//
/// \file TestBeam2021PrimaryGenerator.cc
/// \brief Implementation of the TestBeam2021PrimaryGenerator1 class
//
//
//
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
#include "TestBeam2021PrimaryGenerator.hh"
#include "G4Event.hh"
#include "G4RunManager.hh"
#include "G4ParticleTable.hh"
#include "G4ParticleDefinition.hh"
#include "G4PrimaryParticle.hh"
#include "G4PrimaryVertex.hh"
#include "G4PhysicalConstants.hh"
#include "G4SystemOfUnits.hh"
#include "Randomize.hh"
#include "G4String.hh"
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
TestBeam2021PrimaryGenerator::TestBeam2021PrimaryGenerator()
: G4VPrimaryGenerator()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
TestBeam2021PrimaryGenerator::~TestBeam2021PrimaryGenerator()
{ }
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
void TestBeam2021PrimaryGenerator::GeneratePrimaryVertex(G4Event* event)
{
//Get the alignment from DetectorConstruction
DetectorConstruction* dC
= (DetectorConstruction*)G4RunManager::GetRunManager()->GetUserDetectorConstruction();
if(event->GetEventID() == 0){
G4String _inFile = (std::string)std::getenv("JZCaPA") + "/Utils/Survey_2021.xml";
dC->LoadAlignmentFile( _inFile.c_str() );
m_alignment = dC->GetAlignment();
}
G4cout << "This doesn't do anything yet" << G4endl;
// // Define the position of the particle
// G4double x = yourRandomDistributionX; //x position
// G4double y = yourRandomDistributionY; //y position
// G4ThreeVector position(x,y,0); //Insert x and y into a vector. Beam will be at zero
// G4double time = 0*s; //Time is always zero for us
// //
// G4PrimaryVertex* vertex = new G4PrimaryVertex(position, time); //Insert the position and time into a primary vertex
//
//
// // A note for Hongbo:
// // I think for now we can use the particle type as defined by the .xml file
// // but for future work it might be good for us to simulate an impure beam.
// // What I've written below should work fine. You just need to worry about x and y above
//
// G4ParticleDefinition* particleDefinition
// = G4ParticleTable::GetParticleTable()->FindParticle(alignment.beam_type.c_str()); //get the particle definition for this beam
// G4PrimaryParticle* particle = new G4PrimaryParticle(particleDefinition); //create a particle with the given definition
// particle->SetMomentumDirection(G4ThreeVector(0,0,1)); //set the momentum to be purely in Z
// particle->SetKineticEnergy(alignment.beam_energy); //get the beam energy from the alignment file
// vertex->SetPrimary(particle); //add the particle to the vertex created above
//
// event->AddPrimaryVertex(vertex); //add the vertex to this event for geant to simulate
}
//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment