36 G4int maxNumberOfSplits)
37 : fUpperLimitFactor(upperLimitFactor),
38 fSurvivalFactor(survivalFactor),
39 fMaxNumberOfSplits(maxNumberOfSplits)
51 G4double survivalWeight = lowerWeightBound * fSurvivalFactor;
52 G4double upperWeight = lowerWeightBound * fUpperLimitFactor;
60 if (init_w > upperWeight)
64 G4double temp_wi_ws = init_w/upperWeight;
65 G4int split_i =
static_cast<G4int>(temp_wi_ws);
66 if(split_i != temp_wi_ws) { ++split_i; }
92 else if (init_w < lowerWeightBound)
94 G4double wi_ws = init_w/survivalWeight;
95 G4double p = std::max(wi_ws,1./fMaxNumberOfSplits);
virtual ~G4WeightWindowAlgorithm()
virtual G4Nsplit_Weight Calculate(G4double init_w, G4double lowerWeightBound) const
G4WeightWindowAlgorithm(G4double upperLimitFactor=5, G4double survivalFactor=3, G4int maxNumberOfSplits=5)