예제 #1
0
        private double[] CalculateFullSuppressionFactors(
            BottomiumVector qgpSuppressionFactors
            )
        {
            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            BottomiumVector ppDimuonDecays = cascade.GetNormalizedProtonProtonDimuonDecays();
            double          ppResult1S     = ppDimuonDecays[BottomiumState.Y1S];
            double          ppResult2S     = ppDimuonDecays[BottomiumState.Y2S];
            double          ppResult3S     = ppDimuonDecays[BottomiumState.Y3S];

            BottomiumVector heavyIonDimuonDecays
                = cascade.CalculateDimuonDecays(qgpSuppressionFactors);
            double heavyIonResult1S = heavyIonDimuonDecays[BottomiumState.Y1S];
            double heavyIonResult2S = heavyIonDimuonDecays[BottomiumState.Y2S];
            double heavyIonResult3S = heavyIonDimuonDecays[BottomiumState.Y3S];

            return(new double[] {
                heavyIonResult1S / ppResult1S,
                heavyIonResult2S / ppResult2S,
                heavyIonResult3S / ppResult3S,
                (heavyIonResult2S / heavyIonResult1S) / (ppResult2S / ppResult1S),
                (heavyIonResult3S / heavyIonResult1S) / (ppResult3S / ppResult1S)
            });
        }
예제 #2
0
 public void CalculateCorrectInverseCumulativeMatrix()
 {
     AssertIsUnitMatrix(
         BottomiumCascade.CalculateCumulativeMatrix()
         * BottomiumCascade.CalculateInverseCumulativeMatrix());
     AssertIsUnitMatrix(
         BottomiumCascade.CalculateInverseCumulativeMatrix()
         * BottomiumCascade.CalculateCumulativeMatrix());
 }
예제 #3
0
        public void ShowInverseCumulativeMatrix()
        {
            CurrentJobTitle = "ShowInverseCumulativeMatrix";

            LogMessages.Clear();
            LogMessages.AppendLine("#Inverse cumulative matrix:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(BottomiumCascade.GetInverseCumulativeMatrixString());
            LogMessages.AppendLine();
        }
예제 #4
0
        public void ShowBranchingRatioMatrix()
        {
            CurrentJobTitle = "ShowBranchingRatioMatrix";

            LogMessages.Clear();
            LogMessages.AppendLine("#Branching ratio matrix:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(BottomiumCascade.GetBranchingRatioMatrixString());
            LogMessages.AppendLine();
        }
예제 #5
0
        public void MatricesHaveCorrectDimensions()
        {
            int numberBottomiumStates = Enum.GetValues(typeof(BottomiumState)).Length;

            AssertIsSquareOfDimenions(
                numberBottomiumStates, BottomiumCascade.CalculateBranchingRatioMatrix());
            AssertIsSquareOfDimenions(
                numberBottomiumStates, BottomiumCascade.CalculateCumulativeMatrix());
            AssertIsSquareOfDimenions(
                numberBottomiumStates, BottomiumCascade.CalculateInverseCumulativeMatrix());
        }
예제 #6
0
        public void ShowY1SFeedDownFractions()
        {
            CurrentJobTitle = "ShowY1SFeedDownFractions";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Y1S feed down fractions:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetY1SFeedDownFractionsString());
            LogMessages.AppendLine();
        }
예제 #7
0
        public void ShowProtonProtonDimuonDecays()
        {
            CurrentJobTitle = "ShowProtonProtonDimuonDecays";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Scaled pp dimuon decays:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetNormalizedProtonProtonDimuonDecaysString());
            LogMessages.AppendLine();
        }
예제 #8
0
        public void ShowInitialQQPopulations()
        {
            CurrentJobTitle = "ShowInitialQQPopulations";

            BottomiumCascade cascade = new BottomiumCascade(DimuonDecaysFrompp);

            LogMessages.Clear();
            LogMessages.AppendLine("#Initial QQ populations:");
            LogMessages.AppendLine();
            LogMessages.AppendLine(cascade.GetInitialQQPopulationsString());
            LogMessages.AppendLine();
        }
예제 #9
0
        public void FeedDownCascadeReproducesProtonProtonDimuonDecays()
        {
            BottomiumVector qgpSuppressionFactors = new BottomiumVector();

            foreach (BottomiumState state in Enum.GetValues(typeof(BottomiumState)))
            {
                qgpSuppressionFactors[state] = 1;
            }

            BottomiumVector ppDimuonDecays
                = BottomiumCascade.CalculateDimuonDecays(qgpSuppressionFactors);

            AssertCorrectProtonProtonDimuonDecays(ppDimuonDecays);
        }
예제 #10
0
        public void CalculateY1SFeedDownFractions()
        {
            BottomiumVector feedDownFractions = BottomiumCascade.CalculateY1SFeedDownFractions();

            AssertCorrectY1SFeedDownFractions(feedDownFractions);
        }
예제 #11
0
        public void CalculateInitialQQPopulations()
        {
            BottomiumVector initialQQPopulations = BottomiumCascade.CalculateInitialQQPopulations();

            AssertCorrectInitialQQPopulations(initialQQPopulations);
        }