@@ -699,8 +699,9 @@ void FlowPtContainer::fillSubeventPtProfiles(const double& centmult, const doubl
699699 }
700700 ++subIndex;
701701 }
702- if (valid)
702+ if (valid){
703703 dynamic_cast <BootstrapProfile*>(fSubList ->At (histCounter))->FillProfile (centmult, val, (fEventWeight == EventWeight::UnityWeight) ? 1.0 : dn, rn);
704+ }
704705 ++histCounter;
705706 }
706707 return ;
@@ -907,16 +908,18 @@ void FlowPtContainer::fillCMSubeventProfiles(const double& centmult, const doubl
907908 for (int im = 1 ; im <= mpar; im++) {
908909 indOffset += im;
909910 }
911+
912+ std::vector<int > validMpar = {0 ,0 ,0 };
910913 // 0th order correlation
911914 cmDenSub[0 ].push_back (1 .);
912915 cmValSub[0 ].push_back (1 .);
913916 cmDenSub[nSubevents - 1 ].push_back (1 .);
914917 cmValSub[nSubevents - 1 ].push_back (1 .);
915918
916- cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )]);
917- cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - insub[0 ][getVectorIndex (2 , 0 )]);
918- cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] + 2 * insub[0 ][getVectorIndex (3 , 0 )]);
919- cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 6 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] + 8 * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (3 , 0 )] + 3 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (2 , 0 )] - 6 * insub[0 ][getVectorIndex (4 , 0 )]);
919+ cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )]); // cmDensub[0][1] = sum w
920+ cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - insub[0 ][getVectorIndex (2 , 0 )]); // cmDensub[0][2] = sum wi wj
921+ cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] + 2 * insub[0 ][getVectorIndex (3 , 0 )]); // cmDensub[0][3] = sum wi wj wk
922+ cmDenSub[0 ].push_back (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 6 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] + 8 * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (3 , 0 )] + 3 * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (2 , 0 )] - 6 * insub[0 ][getVectorIndex (4 , 0 )]); // cmDensub[0][4] = sum wi wj wk wl
920923
921924 cmDenSub[nSubevents - 1 ].push_back (insub[nSubevents - 1 ][getVectorIndex (1 , 0 )]);
922925 cmDenSub[nSubevents - 1 ].push_back (insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 0 )]);
@@ -932,43 +935,43 @@ void FlowPtContainer::fillCMSubeventProfiles(const double& centmult, const doubl
932935 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 0 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][1 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][1 ], rn);
933936 }
934937
935- if (mpar < 2 )
936- return ;
937- if (insub[0 ][getVectorIndex (2 , 0 )] != 0 && cmDenSub[0 ][2 ] != 0 ) {
938- cmValSub[0 ].push_back (1 / cmDenSub[0 ][2 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] - insub[0 ][getVectorIndex (2 , 2 )]));
939- dynamic_cast <BootstrapProfile*>(fSubCMList ->At (1 ))->FillProfile (centmult, cmValSub[0 ][2 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][2 ], rn);
940- cmValSub[0 ].push_back (1 / cmDenSub[0 ][2 ] * (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 1 )] - insub[0 ][getVectorIndex (2 , 1 )]));
941- dynamic_cast <BootstrapProfile*>(fSubCMList ->At (2 ))->FillProfile (centmult, cmValSub[0 ][3 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][2 ], rn);
942- }
943- if (insub[nSubevents - 1 ][getVectorIndex (2 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][2 ] != 0 ) {
944- cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][2 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 2 )]));
945- dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 1 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][2 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][2 ], rn);
946- cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][2 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 1 )]));
947- dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 2 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][3 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][2 ], rn);
938+ if (mpar >= 2 ){
939+ if (insub[0 ][getVectorIndex (2 , 0 )] != 0 && cmDenSub[0 ][2 ] != 0 ) {
940+ cmValSub[0 ].push_back (1 / cmDenSub[0 ][2 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] - insub[0 ][getVectorIndex (2 , 2 )]));
941+ dynamic_cast <BootstrapProfile*>(fSubCMList ->At (1 ))->FillProfile (centmult, cmValSub[0 ][2 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][2 ], rn);
942+ cmValSub[0 ].push_back (1 / cmDenSub[0 ][2 ] * (insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 1 )] - insub[0 ][getVectorIndex (2 , 1 )]));
943+ dynamic_cast <BootstrapProfile*>(fSubCMList ->At (2 ))->FillProfile (centmult, cmValSub[0 ][3 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][2 ], rn);
944+ }
945+ if (insub[nSubevents - 1 ][getVectorIndex (2 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][2 ] != 0 ) {
946+ cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][2 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 2 )]));
947+ dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 1 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][2 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][2 ], rn);
948+ cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][2 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 1 )]));
949+ dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 2 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][3 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][2 ], rn);
950+ }
951+ validMpar[0 ] = true ;
948952 }
949953
950- if (mpar < 3 )
951- return ;
952- if (insub[0 ][getVectorIndex (3 , 0 )] != 0 && cmDenSub[0 ][3 ] != 0 ) {
954+ if (mpar >= 3 ){
955+ if (insub[0 ][getVectorIndex (3 , 0 )] != 0 && cmDenSub[0 ][3 ] != 0 ) {
953956 cmValSub[0 ].push_back (1 / cmDenSub[0 ][3 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] - 3 * insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (1 , 1 )] + 2 * insub[0 ][getVectorIndex (3 , 3 )]));
954957 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (3 ))->FillProfile (centmult, cmValSub[0 ][4 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][3 ], rn);
955958 cmValSub[0 ].push_back (1 / cmDenSub[0 ][3 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] - 2 * insub[0 ][getVectorIndex (2 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] + 2 * insub[0 ][getVectorIndex (3 , 2 )] - insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (1 , 0 )]));
956959 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (4 ))->FillProfile (centmult, cmValSub[0 ][5 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][3 ], rn);
957960 cmValSub[0 ].push_back (1 / cmDenSub[0 ][3 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 2 * insub[0 ][getVectorIndex (2 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] + 2 * insub[0 ][getVectorIndex (3 , 1 )] - insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (2 , 0 )]));
958961 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (5 ))->FillProfile (centmult, cmValSub[0 ][6 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][3 ], rn);
959962 }
960- if (insub[nSubevents - 1 ][getVectorIndex (3 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][3 ] != 0 ) {
963+ if (insub[nSubevents - 1 ][getVectorIndex (3 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][3 ] != 0 ) {
961964 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][3 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] + 2 * insub[nSubevents - 1 ][getVectorIndex (3 , 3 )]));
962965 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 3 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][4 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][3 ], rn);
963966 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][3 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 2 * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] + 2 * insub[nSubevents - 1 ][getVectorIndex (3 , 2 )] - insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )]));
964967 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 4 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][5 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][3 ], rn);
965968 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][3 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 2 * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] + 2 * insub[nSubevents - 1 ][getVectorIndex (3 , 1 )] - insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 0 )]));
966969 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 5 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][6 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][3 ], rn);
967970 }
968-
969- if (mpar < 4 )
970- return ;
971- if (insub[0 ][getVectorIndex (4 , 0 )] != 0 && cmDenSub[0 ][4 ] != 0 ) {
971+ validMpar[ 1 ] = true ;
972+ }
973+ if (mpar >= 4 ){
974+ if (insub[0 ][getVectorIndex (4 , 0 )] != 0 && cmDenSub[0 ][4 ] != 0 ) {
972975 cmValSub[0 ].push_back (1 / cmDenSub[0 ][4 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] - 6 * insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] + 3 * insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (2 , 2 )] + 8 * insub[0 ][getVectorIndex (3 , 3 )] * insub[0 ][getVectorIndex (1 , 1 )] - 6 * insub[0 ][getVectorIndex (4 , 4 )]));
973976 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (6 ))->FillProfile (centmult, cmValSub[0 ][7 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][4 ], rn);
974977 cmValSub[0 ].push_back (1 / cmDenSub[0 ][4 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (2 , 1 )] + 3 * insub[0 ][getVectorIndex (2 , 2 )] * insub[0 ][getVectorIndex (2 , 1 )] + 6 * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (3 , 2 )] - 6 * insub[0 ][getVectorIndex (4 , 3 )]));
@@ -978,7 +981,7 @@ void FlowPtContainer::fillCMSubeventProfiles(const double& centmult, const doubl
978981 cmValSub[0 ].push_back (1 / cmDenSub[0 ][4 ] * (insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (2 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] - 3 * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (2 , 0 )] * insub[0 ][getVectorIndex (1 , 0 )] + 3 * insub[0 ][getVectorIndex (2 , 1 )] * insub[0 ][getVectorIndex (2 , 0 )] + 2 * insub[0 ][getVectorIndex (1 , 1 )] * insub[0 ][getVectorIndex (3 , 0 )] + 6 * insub[0 ][getVectorIndex (3 , 1 )] * insub[0 ][getVectorIndex (1 , 0 )] - 6 * insub[0 ][getVectorIndex (4 , 1 )]));
979982 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (9 ))->FillProfile (centmult, cmValSub[0 ][10 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][4 ], rn);
980983 }
981- if (insub[nSubevents - 1 ][getVectorIndex (4 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][4 ] != 0 ) {
984+ if (insub[nSubevents - 1 ][getVectorIndex (4 , 0 )] != 0 && cmDenSub[nSubevents - 1 ][4 ] != 0 ) {
982985 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][4 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - 6 * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] + 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] + 8 * insub[nSubevents - 1 ][getVectorIndex (3 , 3 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] - 6 * insub[nSubevents - 1 ][getVectorIndex (4 , 4 )]));
983986 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 6 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][7 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][4 ], rn);
984987 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][4 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 3 * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] + 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 2 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] + 6 * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (3 , 2 )] - 6 * insub[nSubevents - 1 ][getVectorIndex (4 , 3 )]));
@@ -988,9 +991,11 @@ void FlowPtContainer::fillCMSubeventProfiles(const double& centmult, const doubl
988991 cmValSub[nSubevents - 1 ].push_back (1 / cmDenSub[nSubevents - 1 ][4 ] * (insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 3 * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 0 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] + 3 * insub[nSubevents - 1 ][getVectorIndex (2 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (2 , 0 )] + 2 * insub[nSubevents - 1 ][getVectorIndex (1 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (3 , 0 )] + 6 * insub[nSubevents - 1 ][getVectorIndex (3 , 1 )] * insub[nSubevents - 1 ][getVectorIndex (1 , 0 )] - 6 * insub[nSubevents - 1 ][getVectorIndex (4 , 1 )]));
989992 dynamic_cast <BootstrapProfile*>(fSubCMList ->At (indOffset + 9 ))->FillProfile (centmult, cmValSub[nSubevents - 1 ][10 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[nSubevents - 1 ][4 ], rn);
990993 }
991-
994+ validMpar[2 ] = true ;
995+ }
992996 // Fill cross terms
993997 for (int m = 2 ; m <= 4 ; ++m) {
998+ if (!validMpar[m-2 ]) continue ;
994999 for (int first = 1 ; first < m; ++first) {
9951000 for (int second = first; second < m; ++second) {
9961001 if (first > second)
@@ -999,8 +1004,9 @@ void FlowPtContainer::fillCMSubeventProfiles(const double& centmult, const doubl
9991004 for (int third = 1 ; third < m; ++third) {
10001005 if (third > fourth)
10011006 continue ;
1002- if (insub[0 ][getVectorIndex (m, 0 )] != 0 && insub[nSubevents - 1 ][getVectorIndex (m, 0 )] != 0 && cmDenSub[0 ][m] * cmDenSub[nSubevents - 1 ][m] != 0 )
1007+ if (insub[0 ][getVectorIndex (m, 0 )] != 0 && insub[nSubevents - 1 ][getVectorIndex (m, 0 )] != 0 && cmDenSub[0 ][m] * cmDenSub[nSubevents - 1 ][m] != 0 ){
10031008 dynamic_cast <BootstrapProfile*>(fSubCMList ->FindObject (Form (" cm%i_%i%isub1_%i%isub2" , m, first, second, third, fourth)))->FillProfile (centmult, cmValSub[0 ][second * (second - 1 ) / 2 + second - first + 1 ] * cmValSub[nSubevents - 1 ][fourth * (fourth - 1 ) / 2 + fourth - third + 1 ], (fEventWeight == EventWeight::UnityWeight) ? 1.0 : cmDenSub[0 ][m] * cmDenSub[nSubevents - 1 ][m], rn);
1009+ }
10041010 }
10051011 }
10061012 }
0 commit comments