File indexing completed on 2025-07-09 05:00:33
0001 #ifndef CMSSQLoopProcessDiscr_h
0002 #define CMSSQLoopProcessDiscr_h 1
0003
0004 #include "G4VDiscreteProcess.hh"
0005 #include "globals.hh"
0006 #include "G4Track.hh"
0007 #include "G4ParticleChange.hh"
0008 #include "G4ParticleChangeForTransport.hh"
0009 #include "CMSSQ.h"
0010 #include "CMSAntiSQ.h"
0011
0012 class G4Step;
0013 class G4ParticleDefinition;
0014
0015 class CMSSQLoopProcessDiscr : public G4VDiscreteProcess {
0016 public:
0017 CMSSQLoopProcessDiscr(double mass, const G4String& name = "SQLooper", G4ProcessType type = fUserDefined);
0018 ~CMSSQLoopProcessDiscr() override;
0019
0020 public:
0021 G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&) override;
0022 G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
0023 G4double previousStepSize,
0024 G4ForceCondition* condition) override;
0025 G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*) override;
0026 void SetTimeLimit(G4double);
0027 void StartTracking(G4Track* aTrack) override;
0028
0029 CMSSQLoopProcessDiscr(CMSSQLoopProcessDiscr&) = delete;
0030 CMSSQLoopProcessDiscr& operator=(const CMSSQLoopProcessDiscr& right) = delete;
0031
0032 protected:
0033 G4ParticleChange* fParticleChange;
0034 double GenMass;
0035
0036 private:
0037 G4ThreeVector posini;
0038 G4double globaltimeini;
0039 };
0040
0041 #endif