示例#1
0
        private BottomiumVector CalculateppPopulationsBeforeMuonDecay()
        {
            BottomiumVector        ppDimuonDecays = GetNormalizedProtonProtonDimuonDecays();
            BottomiumCascadeMatrix inverseDMatrix = CalculateInverseDimuonDecayMatrix();

            return(inverseDMatrix * ppDimuonDecays);
        }
示例#2
0
        public BottomiumVector CalculateInitialQQPopulations()
        {
            BottomiumCascadeMatrix inverseCMatrix      = CalculateInverseCumulativeMatrix();
            BottomiumVector        popsBeforeMuonDecay = CalculateppPopulationsBeforeMuonDecay();

            return(inverseCMatrix * popsBeforeMuonDecay);
        }
示例#3
0
        /********************************************************************************************
        * 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);
        }
示例#4
0
        private BottomiumVector CalculateReducedInitialQQPopulations(
            BottomiumVector qgpSuppressionFactors
            )
        {
            BottomiumVector initialPops = CalculateInitialQQPopulations();

            BottomiumCascadeMatrix qgpSuppressionMatrix
                = BottomiumCascadeMatrix.CreateDiagonalMatrix(qgpSuppressionFactors);

            return(qgpSuppressionMatrix * initialPops);
        }
示例#5
0
        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);
        }
示例#6
0
        public BottomiumVector CalculateDimuonDecays(
            BottomiumVector qgpSuppressionFactors
            )
        {
            BottomiumCascadeMatrix cMatrix     = CalculateCumulativeMatrix();
            BottomiumVector        reducedPops = CalculateReducedInitialQQPopulations(qgpSuppressionFactors);

            BottomiumVector tmpPop = cMatrix * reducedPops;

            BottomiumCascadeMatrix dMatrix = CalculateDimuonDecayMatrix();

            return(dMatrix * tmpPop);
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        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);
        }
示例#10
0
        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);
        }
示例#11
0
        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);
        }
示例#12
0
        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);
        }
示例#13
0
        /********************************************************************************************
        * 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);
        }