60 PBound(0), Parameterisation(0), HMaker(0)
70 PBound(0), Parameterisation(0), HMaker(0)
147 OrthoShower = DirectionShower.orthogonal();
149 CrossShower = DirectionShower.cross(OrthoShower);
153 G4int CosPhi[4] = {1,0,-1,0};
154 G4int SinPhi[4] = {0,1,0,-1};
157 G4int NlateralInside=0;
160 for(
int i=0; i<4 ;i++)
163 Position = InitialPositionShower +
165 R*CosPhi[i]*OrthoShower +
166 R*SinPhi[i]*CrossShower ;
173 if(NlateralInside==4) filter=
true;
211 OrthoShower = DirectionShower.orthogonal();
212 CrossShower = DirectionShower.cross(OrthoShower);
243 G4int NSpotDeposited =0;
253 if(Bound < stepLength)
263 ZEndStep=ZEndStep+Dz;
268 LastEneIntegral = EneIntegral;
271 (EneIntegral-LastEneIntegral)*Energy);
272 LastNspIntegral = NspIntegral;
274 DNsp =
std::max(1., std::floor( (NspIntegral-LastNspIntegral)
281 DNsp =
std::max(1., std::floor( (1.- NspIntegral)
284 EnergyNow = EnergyNow - DEne;
297 StepLenght = StepLenght + Dz/2.00;
298 NewPositionShower = NewPositionShower +
299 StepLenght*DirectionShower;
300 StepLenght = Dz/2.00;
303 for (
int i = 0; i < DNsp; i++)
318 Dz/DNsp*DirectionShower*(i+1/2.-DNsp/2.) +
319 RSpot*std::cos(PhiSpot)*OrthoShower +
320 RSpot*std::sin(PhiSpot)*CrossShower;
327 while(EnergyNow > 0.0 && Bound> 0.0);
G4ParticleDefinition * GetDefinition() const
static G4Electron * ElectronDefinition()
G4ThreeVector GetPrimaryTrackLocalPosition() const
const G4Track * GetPrimaryTrack() const
G4ThreeVector GetPrimaryTrackLocalDirection() const
virtual G4double GetNspot()=0
void DoIt(const G4FastTrack &, G4FastStep &)
virtual G4double GetX0()=0
CLHEP::Hep3Vector G4ThreeVector
void SetPosition(const G4ThreeVector &point)
const G4ThreeVector & GetPosition() const
G4bool IsApplicable(const G4ParticleDefinition &)
GFlashParticleBounds * PBound
G4int FlagParticleContainment
0=no GFlash 1=only em showers parametrized
void make(GFlashEnergySpot *aSpot, const G4FastTrack *aT)
G4bool CheckParticleDefAndContainment(const G4FastTrack &fastTrack)
GFlashShowerModelMessenger * Messenger
G4double GetMaxEneToParametrise(G4ParticleDefinition &particleType)
G4double GetKineticEnergy() const
G4double GetMinEneToParametrise(G4ParticleDefinition &particleType)
virtual EInside Inside(const G4ThreeVector &p) const =0
virtual void GenerateLongitudinalProfile(G4double Energy)=0
void SetEnergy(const G4double &E)
virtual G4double GetAveR90()=0
G4VSolid * GetEnvelopeSolid() const
static G4Positron * PositronDefinition()
const G4ThreeVector & GetMomentumDirection() const
G4double ApplySampling(const G4double DEne, const G4double Energy)
G4double GetEneToKill(G4ParticleDefinition &particleType)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
virtual G4double GetAveT90()=0
void SetPrimaryTrackPathLength(G4double)
T min(const T t1, const T t2)
brief Return the smallest of the two arguments
G4bool ModelTrigger(const G4FastTrack &)
virtual G4double IntegrateEneLongitudinal(G4double LongitudinalStep)=0
G4double StepInX0
0=no check ///1=only fully contained...
GFlashShowerModel(G4String, G4Envelope *)
virtual G4double DistanceToOut(const G4ThreeVector &p, const G4ThreeVector &v, const G4bool calcNorm=false, G4bool *validNorm=0, G4ThreeVector *n=0) const =0
virtual G4double GenerateRadius(G4int ispot, G4double Energy, G4double LongitudinalPosition)=0
G4bool CheckContainment(const G4FastTrack &fastTrack)
void ElectronDoIt(const G4FastTrack &, G4FastStep &)
void SetTotalEnergyDeposited(G4double anEnergyPart)
static const G4double pos
GVFlashShowerParameterisation * Parameterisation
virtual G4double IntegrateNspLongitudinal(G4double LongitudinalStep)=0