virtual void SetModelParameter(const char* parName, Double_t parValue, Int_t imed);
virtual TObjArray* GetListOfUserConfigs() {return fUserConfig;}
virtual Double_t Xsec(char*, Double_t, Int_t, Int_t);
-
-
+ virtual void SetLowEnergyNeutronTransport(Bool_t flag) {fLowEnergyNeutronTransport = flag;}
+ virtual Bool_t LowEnergyNeutronTransport() {return fLowEnergyNeutronTransport;}
// Particle table usage
virtual Int_t IdFromPDG(Int_t id) const;
virtual Int_t PDGFromId(Int_t pdg) const;
// Particle Properties
// -------------------
//
- virtual Bool_t DefineParticle(int, const char*, TMCParticleType, double, double, double) {return kFALSE;}
+ virtual Bool_t DefineParticle(Int_t, const char*, TMCParticleType, Double_t, Double_t, Double_t) {return kFALSE;}
+ virtual Bool_t DefineParticle(Int_t, const char*, TMCParticleType, Double_t, Double_t, Double_t,
+ const TString&, Double_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t, Int_t,
+ Bool_t, Bool_t = kFALSE, const TString& = "", Int_t = 0, Double_t = 0.0, Double_t = 0.0) {return kFALSE;}
virtual Bool_t DefineIon(const char*, int, int, int, double, double) {return kFALSE;}
virtual TString ParticleName(int pdg) const;
virtual Double_t ParticleMass(int pdg) const;
void SetXsco(Double_t x) {fXsco = x;}
void SetYsco(Double_t y) {fYsco = y;}
void SetZsco(Double_t z) {fZsco = z;}
-
+ void SetPint(Double_t px, Double_t py, Double_t pz, Double_t e) {fPint[0] = px; fPint[1] = py; fPint[2] = pz; fPint[3] = e;}
void SetTrackIsEntering(){fTrackIsEntering = kTRUE; fTrackIsExiting = kFALSE;}
void SetTrackIsExiting() {fTrackIsExiting = kTRUE; fTrackIsEntering = kFALSE;}
void SetTrackIsInside() {fTrackIsExiting = kFALSE; fTrackIsEntering = kFALSE;}
// Info about primary ionization electrons
Int_t GetNPrimaryElectrons();
Double_t GetPrimaryElectronKineticEnergy(Int_t i) const;
- void GetPrimaryElectronPosition(Int_t i, Double_t& x, Double_t& y, Double_t& z) const;
+ void GetPrimaryElectronPosition(Int_t i, Double_t& x, Double_t& y, Double_t& z, Double_t& t) const;
void SetCurrentPrimaryElectronIndex(Int_t i) {fPrimaryElectronIndex = i;}
- void PrimaryIonisationStepping(Int_t nprim);
+ void PrimaryIonisationStepping(Int_t nprim);
+ void CalcPrimaryIonisationTime();
+ void AddIon(Int_t a, Int_t z) const;
+ Int_t GetIonPdg(Int_t z, Int_t a, Int_t i = 0) const;
private:
// Copy constructor and operator= declared but not implemented (-Weff++ flag)
void PrintHeader();
void AddParticlesToPdgDataBase() const;
- Int_t GetIonPdg(Int_t z, Int_t a, Int_t i = 0) const;
+ Int_t GetSpecialPdg(Int_t number) const;
+
+ Float_t* CreateFloatArray(Double_t* array, Int_t size) const;
+
//
Int_t fVerbosityLevel; //Verbosity level (0 lowest - 3 highest)
Int_t fNEvent; //Current event number
Double_t fXsco; // Fluka Draw procedures formal parameter
Double_t fYsco; // Fluka Draw procedures formal parameter
Double_t fZsco; // Fluka Draw procedures formal parameter
+ Double_t fPint[4]; // 4-vector of particle after interaction
+ Double_t* fPItime; // Time distribution of primary ionisations
+ Double_t* fPIlength; // Track length distribution of primary ionisations
+ Int_t fNPI; // Number of primary ionisation steps
Bool_t fTrackIsEntering; // Flag for track entering
Bool_t fTrackIsExiting; // Flag for track exiting
Bool_t fTrackIsNew; // Flag for new track
Bool_t fStopEvent; // Flag for stopped event
Bool_t fStopRun; // Flag for stopped run
Int_t fPrimaryElectronIndex; // Primary electron Index
+ Bool_t fLowEnergyNeutronTransport; // Flag to force low energy neutron transport
//
//Geometry through TGeo