private BottomiumVector CalculateppPopulationsBeforeMuonDecay() { BottomiumVector ppDimuonDecays = GetNormalizedProtonProtonDimuonDecays(); BottomiumCascadeMatrix inverseDMatrix = CalculateInverseDimuonDecayMatrix(); return(inverseDMatrix * ppDimuonDecays); }
public BottomiumVector CalculateInitialQQPopulations() { BottomiumCascadeMatrix inverseCMatrix = CalculateInverseCumulativeMatrix(); BottomiumVector popsBeforeMuonDecay = CalculateppPopulationsBeforeMuonDecay(); return(inverseCMatrix * popsBeforeMuonDecay); }
/******************************************************************************************** * Public static members, functions and properties ********************************************************************************************/ public static BottomiumCascadeMatrix CreateUnitMatrix() { BottomiumCascadeMatrix matrix = new BottomiumCascadeMatrix(); foreach (BottomiumState s in Enum.GetValues(typeof(BottomiumState))) { matrix[s, s] = 1; } return(matrix); }
private BottomiumVector CalculateReducedInitialQQPopulations( BottomiumVector qgpSuppressionFactors ) { BottomiumVector initialPops = CalculateInitialQQPopulations(); BottomiumCascadeMatrix qgpSuppressionMatrix = BottomiumCascadeMatrix.CreateDiagonalMatrix(qgpSuppressionFactors); return(qgpSuppressionMatrix * initialPops); }
public static BottomiumCascadeMatrix CreateDiagonalMatrix( BottomiumVector diagonalElements ) { BottomiumCascadeMatrix matrix = new BottomiumCascadeMatrix(); foreach (BottomiumState s in Enum.GetValues(typeof(BottomiumState))) { matrix[s, s] = diagonalElements[s]; } return(matrix); }
public BottomiumVector CalculateDimuonDecays( BottomiumVector qgpSuppressionFactors ) { BottomiumCascadeMatrix cMatrix = CalculateCumulativeMatrix(); BottomiumVector reducedPops = CalculateReducedInitialQQPopulations(qgpSuppressionFactors); BottomiumVector tmpPop = cMatrix * reducedPops; BottomiumCascadeMatrix dMatrix = CalculateDimuonDecayMatrix(); return(dMatrix * tmpPop); }
public static BottomiumCascadeMatrix CalculateDimuonDecayMatrix() { BottomiumCascadeMatrix dMatrix = new BottomiumCascadeMatrix(); dMatrix[BottomiumState.Y1S, BottomiumState.Y1S] = Constants.B1Smu; dMatrix[BottomiumState.x1P, BottomiumState.x1P] = Constants.B1Smu * Constants.B1P1S; dMatrix[BottomiumState.Y2S, BottomiumState.Y2S] = Constants.B2Smu; dMatrix[BottomiumState.x2P, BottomiumState.x2P] = Constants.B1Smu * Constants.B2P1S; dMatrix[BottomiumState.Y3S, BottomiumState.Y3S] = Constants.B3Smu; dMatrix[BottomiumState.x3P, BottomiumState.x3P] = Constants.B1Smu * Constants.B3P1S; return(dMatrix); }
public BottomiumVector CalculateY1SFeedDownFractions() { BottomiumVector initialPops = CalculateInitialQQPopulations(); BottomiumCascadeMatrix cMatrix = CalculateCumulativeMatrix(); BottomiumVector tmpPops = cMatrix * initialPops; BottomiumCascadeMatrix bMatrix = CalculateBranchingRatioMatrix(); foreach (BottomiumState i in Enum.GetValues(typeof(BottomiumState))) { tmpPops[i] *= Constants.B1Smu * bMatrix[BottomiumState.Y1S, i]; } tmpPops[BottomiumState.Y1S] = Constants.B1Smu * initialPops[BottomiumState.Y1S]; return(tmpPops); }
public static BottomiumCascadeMatrix CalculateInverseDimuonDecayMatrix() { BottomiumCascadeMatrix inverseDMatrix = new BottomiumCascadeMatrix(); inverseDMatrix[BottomiumState.Y1S, BottomiumState.Y1S] = 1.0 / Constants.B1Smu; inverseDMatrix[BottomiumState.x1P, BottomiumState.x1P] = 1.0 / (Constants.B1Smu * Constants.B1P1S); inverseDMatrix[BottomiumState.Y2S, BottomiumState.Y2S] = 1.0 / Constants.B2Smu; inverseDMatrix[BottomiumState.x2P, BottomiumState.x2P] = 1.0 / (Constants.B1Smu * Constants.B2P1S); inverseDMatrix[BottomiumState.Y3S, BottomiumState.Y3S] = 1.0 / Constants.B3Smu; inverseDMatrix[BottomiumState.x3P, BottomiumState.x3P] = 1.0 / (Constants.B1Smu * Constants.B3P1S); return(inverseDMatrix); }
public static BottomiumCascadeMatrix operator *( BottomiumCascadeMatrix left, BottomiumCascadeMatrix right ) { BottomiumCascadeMatrix result = new BottomiumCascadeMatrix(); foreach (BottomiumState s in Enum.GetValues(typeof(BottomiumState))) { foreach (BottomiumState t in Enum.GetValues(typeof(BottomiumState))) { foreach (BottomiumState u in Enum.GetValues(typeof(BottomiumState))) { result[s, t] += left[s, u] * right[u, t]; } } } return(result); }
public static BottomiumCascadeMatrix CalculateCumulativeMatrix() { BottomiumCascadeMatrix cMatrix = BottomiumCascadeMatrix.CreateUnitMatrix(); BottomiumCascadeMatrix bMatrix = CalculateBranchingRatioMatrix(); for (int j = 0; j < BottomiumStatesCount; j++) { for (int i = BottomiumStatesCount - 1; i >= 0; i--) { for (int k = BottomiumStatesCount - 1; k >= 0; k--) { var iState = (BottomiumState)i; var jState = (BottomiumState)j; var kState = (BottomiumState)k; cMatrix[iState, jState] += bMatrix[iState, kState] * cMatrix[kState, jState]; } } } return(cMatrix); }
public static BottomiumCascadeMatrix CalculateInverseCumulativeMatrix() { BottomiumCascadeMatrix inverseCMatrix = new BottomiumCascadeMatrix(); BottomiumCascadeMatrix bMatrix = CalculateBranchingRatioMatrix(); foreach (BottomiumState i in Enum.GetValues(typeof(BottomiumState))) { foreach (BottomiumState j in Enum.GetValues(typeof(BottomiumState))) { if (i == j) { inverseCMatrix[i, j] = 1 - bMatrix[i, j]; } else { inverseCMatrix[i, j] = -bMatrix[i, j]; } } } return(inverseCMatrix); }
/******************************************************************************************** * Public static members, functions and properties ********************************************************************************************/ public static BottomiumCascadeMatrix CalculateBranchingRatioMatrix() { // Branching ratio B(X->Y) have non-zero values if the masses X,Y satisfy X > Y. BottomiumCascadeMatrix bMatrix = new BottomiumCascadeMatrix(); bMatrix[BottomiumState.Y1S, BottomiumState.x1P] = Constants.B1P1S; bMatrix[BottomiumState.Y1S, BottomiumState.Y2S] = Constants.B2S1S; bMatrix[BottomiumState.Y1S, BottomiumState.x2P] = Constants.B2P1S; bMatrix[BottomiumState.Y1S, BottomiumState.Y3S] = Constants.B3S1S; bMatrix[BottomiumState.Y1S, BottomiumState.x3P] = Constants.B3P1S; bMatrix[BottomiumState.x1P, BottomiumState.Y2S] = Constants.B2S1P; bMatrix[BottomiumState.x1P, BottomiumState.x2P] = Constants.B2P1P; bMatrix[BottomiumState.x1P, BottomiumState.Y3S] = Constants.B3S1P; bMatrix[BottomiumState.x1P, BottomiumState.x3P] = Constants.B3P1P; bMatrix[BottomiumState.Y2S, BottomiumState.x2P] = Constants.B2P2S; bMatrix[BottomiumState.Y2S, BottomiumState.Y3S] = Constants.B3S2S; bMatrix[BottomiumState.Y2S, BottomiumState.x3P] = Constants.B3P2S; bMatrix[BottomiumState.x2P, BottomiumState.Y3S] = Constants.B3S2P; bMatrix[BottomiumState.x2P, BottomiumState.x3P] = Constants.B3P2P; bMatrix[BottomiumState.Y3S, BottomiumState.x3P] = Constants.B3P3S; return(bMatrix); }