115 BuildDetectorResponse();
121 void Par01EMShowerModel::Explode(
const G4FastTrack& fastTrack)
137 tmax = 1.0 * (std::log(y) +
C);
152 yShower = zShower.
cross(xShower);
158 G4double deposit = Energy/double(nSpots);
165 for (
int i = 0; i < nSpots; i++)
177 if (xr < 0.9) r = xr/0.9*Rm;
178 else r = ((xr - 0.9)/0.1*2.5 + 1.0)*Rm;
184 r*std::cos(phi)*xShower + r*std::sin(phi)*yShower;
190 feSpotList.push_back(eSpot);
196 void Par01EMShowerModel::BuildDetectorResponse()
199 for (
size_t i = 0; i < feSpotList.size(); i++)
207 AssignSpotAndCallHit(feSpotList[i]);
213 void Par01EMShowerModel::AssignSpotAndCallHit(
const Par01EnergySpot &eSpot)
229 if( pCurrentVolume != 0 )
232 GetSensitiveDetector();
233 if( pSensitive != 0 )
235 pSensitive->
Hit(fFakeStep);
251 GetNavigatorForTracking()->GetWorldVolume());
253 LocateGlobalPointAndUpdateTouchableHandle(eSpot.
GetPosition(),
262 LocateGlobalPointAndUpdateTouchableHandle(eSpot.
GetPosition(),
void SetPosition(const G4ThreeVector &point)
G4ParticleDefinition * GetDefinition() const
static G4Electron * ElectronDefinition()
virtual G4bool IsApplicable(const G4ParticleDefinition &)
ThreeVector shoot(const G4int Ap, const G4int Af)
G4double GetEnergy() const
G4Material * FindOrBuildMaterial(const G4String &name, G4bool isotopes=true, G4bool warning=false)
const G4Track * GetPrimaryTrack() const
CLHEP::Hep3Vector G4ThreeVector
Definition of the Par01EMShowerModel class.
std::vector< ExP01TrackerHit * > a
const G4ThreeVector & GetPosition() const
virtual G4bool ModelTrigger(const G4FastTrack &)
static G4NistManager * Instance()
Par01EMShowerModel(G4String, G4Region *)
static constexpr double twopi
G4StepPoint * GetPreStepPoint() const
G4double GetKineticEnergy() const
G4VPhysicalVolume * GetPhysicalVolume() const
void ProposePrimaryTrackPathLength(G4double)
G4bool Hit(G4Step *aStep)
G4double GetRadlen() const
G4ThreeVector GetPosition() const
static G4TransportationManager * GetTransportationManager()
static G4Positron * PositronDefinition()
const G4ThreeVector & GetMomentumDirection() const
G4LogicalVolume * GetLogicalVolume() const
G4StepPoint * GetPostStepPoint() const
Hep3Vector orthogonal() const
void SetEnergy(const G4double &E)
Definition of the Par01EnergySpot class.
void ProposeTotalEnergyDeposited(G4double anEnergyPart)
static constexpr double MeV
void SetTotalEnergyDeposit(G4double value)
Hep3Vector cross(const Hep3Vector &) const
void SetTouchableHandle(const G4TouchableHandle &apValue)
virtual void DoIt(const G4FastTrack &, G4FastStep &)
static G4Gamma * GammaDefinition()