14 #include "G4SDManager.hh" 17 #include "G4VProcess.hh" 23 #include "G4StepPoint.hh" 28 : theDebugLevel(theConf.getUntrackedParameter<
int>(
"DebugLevel",0)),
29 theEnergyLossScalingFactor(theConf.getUntrackedParameter<double>(
"EnergyLossScalingFactor",1.0)),
30 theMPDebug(theConf.getUntrackedParameter<
int>(
"MaterialPropertiesDebugLevel",0)),
31 theSiAbsLengthScale(theConf.getUntrackedParameter<double>(
"SiAbsorptionLengthScalingFactor",1.0)),
33 theMaterialProperties(),
34 thePrimaryGenerator(), theSteppingAction(),
35 theBarrelHits(0), theEndcapHits(0),
36 theParameterSet(theConf)
40 edm::LogInfo(
"SimLaserAlignmentSimulation") <<
" ***** AC1CMS: Configuration from ParameterSet ***** " 43 <<
"\n AC1CMS: theMPDebugLevel = " <<
theMPDebug 60 LogDebug(
"SimLaserAlignmentSimulation") <<
"<LaserAlignmentSimulation::update(const BeginOfRun * myRun)>" 61 <<
"\n ***** AC1CMS: Start of Run: " << (*myRun)()->GetRunID() <<
" ***** ";
79 G4SDManager * theSDManager = G4SDManager::GetSDMpointer();
80 theSDManager->ListTree();
86 LogDebug(
"SimLaserAlignmentSimulation") <<
"<LaserAlignmentSimulation::update(const BeginOfEvent * myEvent)>" 87 <<
"\n AC1CMS: Event number = " << (*myEvent)()->GetEventID();
103 LogDebug(
"SimLaserAlignmentSimulationStepping") <<
"<LaserAlignmentSimulation::update(const G4Step * myStep)>";
105 G4Step * theStep =
const_cast<G4Step*
>(myStep);
111 if ( ( theStep->GetPostStepPoint()->GetProcessDefinedStep()->GetProcessName()==
"OpAbsorption" ) )
113 LogDebug(
"SimLaserAlignmentSimulationStepping") <<
"<LaserAlignmentSimulation::update(const G4Step*)>: Photon was absorbed! ";
116 if ( theStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetSensitiveDetector() )
118 LogDebug(
"SimLaserAlignmentSimulationStepping") <<
" AC1CMS: Setting the EnergyLoss to " << theStep->GetTotalEnergyDeposit()
119 <<
"\n AC1CMS: The z position is " << theStep->GetPreStepPoint()->GetPosition().z()
120 <<
"\n AC1CMS: the Sensitive Detector: " 121 << theStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetSensitiveDetector()->GetName()
122 <<
"\n AC1CMS: the Material: " << theStep->GetPreStepPoint()->GetMaterial()->GetName()
123 <<
"\n AC1CMS: the Logical Volume: " 124 << theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName();
126 if (theStep->GetTotalEnergyDeposit() > 0.0)
130 (theStep->GetPreStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetSensitiveDetector());
132 theSD->
ProcessHits(theStep, ((G4TouchableHistory *)(theStep->GetPreStepPoint()->GetTouchable())));
136 if ( ( theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName() ==
"TECModule3RphiActive" ) ||
137 ( theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName() ==
"TECModule5RphiActive" ) )
141 else if ( ( theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName() ==
"TOBActiveSter0" ) ||
142 ( theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName() ==
"TOBActiveRphi0" ) ||
143 ( theStep->GetPostStepPoint()->GetPhysicalVolume()->GetLogicalVolume()->GetName() ==
"TIBActiveRphi2" ) )
151 LogDebug(
"SimLaserAlignmentSimulationStepping") <<
" AC1CMS: No SensitiveDetector available for this Step ... No Hit created :-( " 152 <<
"\n AC1CMS: The Material was: " << theStep->GetPreStepPoint()->GetMaterial()->GetName();
163 LogDebug(
"SimLaserAlignmentSimulation") <<
"<LaserAlignmentSimulation::update(const EndOfEvent * myEvent)>" 164 <<
"\n AC1CMS: End of Event " << (*myEvent)()->GetEventID();
168 <<
" (Barrel / Endcaps) *** ";
173 LogDebug(
"SimLaserAlignmentSimulation") <<
"<LaserAlignmentSimulation::update(const EndOfRun * myRun)>";
177 edm::LogInfo(
"SimLaserAlignmentSimulation") <<
" AC1CMS: Number of Events = " << (*myRun)()->GetNumberOfEventToBeProcessed()
179 <<
" ***** AC1CMS: End of Run: " << (*myRun)()->GetRunID() <<
" ***** ";
#define DEFINE_SIMWATCHER(type)
double theSiAbsLengthScale
bool ProcessHits(G4Step *, G4TouchableHistory *) override
double theEnergyLossScalingFactor
~LaserAlignmentSimulation() override
destructor
void GeneratePrimaries(G4Event *myEvent) override
call the corresponding GeneratePrimaries routines for both TEC's and the Barrel
LaserAlignmentSimulation(edm::ParameterSet const &theConf)
constructor
LaserPrimaryGeneratorAction * thePrimaryGenerator
MaterialProperties * theMaterialProperties
LaserSteppingAction * theSteppingAction
edm::ParameterSet theParameterSet
void UserSteppingAction(const G4Step *myStep) override
stepping action: set energydeposit when a photon is absorbed in a Si module
void update(const BeginOfRun *myRun) override
observer for BeginOfRun