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

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

            return(inverseCMatrix * popsBeforeMuonDecay);
        }
Beispiel #3
0
        private BottomiumVector CalculateReducedInitialQQPopulations(
            BottomiumVector qgpSuppressionFactors
            )
        {
            BottomiumVector initialPops = CalculateInitialQQPopulations();

            BottomiumCascadeMatrix qgpSuppressionMatrix
                = BottomiumCascadeMatrix.CreateDiagonalMatrix(qgpSuppressionFactors);

            return(qgpSuppressionMatrix * initialPops);
        }
Beispiel #4
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);
        }
Beispiel #5
0
 private void InitQGPSuppressionFactors()
 {
     FlatQGPSuppressionFactors = new BottomiumVector[NumberFlatBins][];
     for (int binIndex = 0; binIndex < NumberFlatBins; binIndex++)
     {
         FlatQGPSuppressionFactors[binIndex]
             = new BottomiumVector[FireballParam.TransverseMomenta_GeV.Count];
         for (int pTIndex = 0; pTIndex < FireballParam.TransverseMomenta_GeV.Count; pTIndex++)
         {
             FlatQGPSuppressionFactors[binIndex][pTIndex] = new BottomiumVector();
         }
     }
 }
Beispiel #6
0
        public BottomiumVector CalculateInitialQQPopulationsWithDimuonBranchingRatiosIncluded()
        {
            BottomiumVector initialPops = CalculateInitialQQPopulations();

            initialPops[BottomiumState.Y1S] *= Constants.B1Smu;
            initialPops[BottomiumState.x1P] *= Constants.B1Smu;
            initialPops[BottomiumState.Y2S] *= Constants.B2Smu;
            initialPops[BottomiumState.x2P] *= Constants.B2Smu;
            initialPops[BottomiumState.Y3S] *= Constants.B3Smu;
            initialPops[BottomiumState.x3P] *= Constants.B3Smu;

            return(initialPops);
        }
Beispiel #7
0
        public BottomiumVector CalculateDimuonDecays(
            BottomiumVector qgpSuppressionFactors
            )
        {
            BottomiumCascadeMatrix cMatrix     = CalculateCumulativeMatrix();
            BottomiumVector        reducedPops = CalculateReducedInitialQQPopulations(qgpSuppressionFactors);

            BottomiumVector tmpPop = cMatrix * reducedPops;

            BottomiumCascadeMatrix dMatrix = CalculateDimuonDecayMatrix();

            return(dMatrix * tmpPop);
        }
        public static BottomiumVector operator *(
            double scalar,
            BottomiumVector vector
            )
        {
            BottomiumVector result = new BottomiumVector();

            foreach (BottomiumState i in Enum.GetValues(typeof(BottomiumState)))
            {
                result[i] = scalar * vector[i];
            }

            return(result);
        }
        /********************************************************************************************
        * Public static members, functions and properties
        ********************************************************************************************/

        public static BottomiumVector operator +(
            BottomiumVector left,
            BottomiumVector right
            )
        {
            BottomiumVector result = new BottomiumVector();

            foreach (BottomiumState i in Enum.GetValues(typeof(BottomiumState)))
            {
                result[i] = left[i] + right[i];
            }

            return(result);
        }
Beispiel #10
0
 private void ReshapeFlatArrays()
 {
     NormalizationFactors  = new double[NumberCentralityBins.Count][];
     QGPSuppressionFactors = new BottomiumVector[NumberCentralityBins.Count][][];
     for (int binGroupIndex = 0; binGroupIndex < NumberCentralityBins.Count; binGroupIndex++)
     {
         NormalizationFactors[binGroupIndex] = new double[NumberCentralityBins[binGroupIndex]];
         QGPSuppressionFactors[binGroupIndex]
             = new BottomiumVector[NumberCentralityBins[binGroupIndex]][];
         for (int binIndex = 0; binIndex < NumberCentralityBins[binGroupIndex]; binIndex++)
         {
             ReshapeNormalizationFactors(binGroupIndex, binIndex);
             ReshapeQGPSuppressionFactors(binGroupIndex, binIndex);
         }
     }
 }
Beispiel #11
0
        public static BottomiumVector operator *(
            BottomiumCascadeMatrix matrix,
            BottomiumVector vector
            )
        {
            BottomiumVector result = new BottomiumVector();

            foreach (BottomiumState i in Enum.GetValues(typeof(BottomiumState)))
            {
                foreach (BottomiumState j in Enum.GetValues(typeof(BottomiumState)))
                {
                    result[i] += matrix[i, j] * vector[j];
                }
            }

            return(result);
        }
Beispiel #12
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);
        }
Beispiel #13
0
 private void ReshapeQGPSuppressionFactors(
     int binGroupIndex,
     int binIndex
     )
 {
     QGPSuppressionFactors[binGroupIndex][binIndex]
         = new BottomiumVector[FireballParam.TransverseMomenta_GeV.Count];
     for (int pTIndex = 0; pTIndex < FireballParam.TransverseMomenta_GeV.Count; pTIndex++)
     {
         QGPSuppressionFactors[binGroupIndex][binIndex][pTIndex] = new BottomiumVector();
         for (int flatBinIndex = ArrayReshapingMask[binGroupIndex][binIndex];
              flatBinIndex < ArrayReshapingMask[binGroupIndex][binIndex + 1];
              flatBinIndex++)
         {
             QGPSuppressionFactors[binGroupIndex][binIndex][pTIndex]
                 += FlatQGPSuppressionFactors[flatBinIndex][pTIndex];
         }
     }
 }
Beispiel #14
0
        public string GetInitialQQPopulationsString()
        {
            BottomiumVector initialPopsBR
                = CalculateInitialQQPopulationsWithDimuonBranchingRatiosIncluded();
            Table <string> initialPopsBRStrings = Table <string> .CreateFromFormattedTableString(
                initialPopsBR.GetVectorString(
                    description: "N^i_AA,nl/N^f_pp,1S",
                    extractGammaTot3P: true));

            BottomiumVector initialPops        = CalculateInitialQQPopulations();
            Table <string>  initialPopsStrings = Table <string> .CreateFromFormattedTableString(
                initialPops.GetVectorString(
                    description: "N^i_AA,nl/N^f_pp,1S/B(nS→µ±)",
                    extractGammaTot3P: true));

            initialPopsBRStrings.AddColumn(initialPopsStrings.GetColumn(1), string.Empty);

            return(initialPopsBRStrings.ToFormattedTableString());
        }
Beispiel #15
0
        /********************************************************************************************
        * Constructors
        ********************************************************************************************/

        public BottomiumCascade(
            Dictionary <BottomiumState, double> dimuonDecaysFrompp
            )
        {
            DimuonDecaysFrompp = new BottomiumVector(dimuonDecaysFrompp);
        }