100 double NewEnergy = 0.0;
102 double NewEnergy_RelMC = 0.0;
103 double NewEnergy_RelDC = 0.0;
105 double MNxN_RelMC[9] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } ;
106 double MNxN_RelDC[9] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } ;
115 if (sum8_RelDC > Sum8Cut && sum8_RelMC > Sum8Cut) {
122 double SumMNxN_RelMC = MNxN_RelMC[
LU] + MNxN_RelMC[
UU] + MNxN_RelMC[
RU] +
123 MNxN_RelMC[
LL] + MNxN_RelMC[
CC] + MNxN_RelMC[
RR] +
124 MNxN_RelMC[
LD] + MNxN_RelMC[
DD] + MNxN_RelMC[
RD] ;
126 double frMNxN_RelMC[9];
for (
int i=0;
i<9;
i++) { frMNxN_RelMC[
i] = MNxN_RelMC[
i] / SumMNxN_RelMC ; }
128 double prMNxN_RelMC = P::Diagonal( frMNxN_RelMC[
LU] ) * P::UpDown( frMNxN_RelMC[
UU] ) * P::Diagonal( frMNxN_RelMC[
RU] ) *
129 P::ReftRight( frMNxN_RelMC[
LL] ) * P::Central( frMNxN_RelMC[
CC] ) * P::ReftRight( frMNxN_RelMC[
RR] ) *
130 P::Diagonal( frMNxN_RelMC[
LD] ) * P::UpDown( frMNxN_RelMC[
DD] ) * P::Diagonal( frMNxN_RelMC[
RD] ) ;
132 double SumMNxN_RelDC = MNxN_RelDC[
LU] + MNxN_RelDC[
UU] + MNxN_RelDC[
RU] +
133 MNxN_RelDC[
LL] + MNxN_RelDC[
CC] + MNxN_RelDC[
RR] +
134 MNxN_RelDC[
LD] + MNxN_RelDC[
DD] + MNxN_RelDC[
RD] ;
136 double frMNxN_RelDC[9];
for (
int i=0;
i<9;
i++) { frMNxN_RelDC[
i] = MNxN_RelDC[
i] / SumMNxN_RelDC ; }
138 double prMNxN_RelDC = P::Diagonal( frMNxN_RelDC[
LU] ) * P::UpDown( frMNxN_RelDC[
UU] ) * P::Diagonal( frMNxN_RelDC[
RU] ) *
139 P::ReftRight( frMNxN_RelDC[
LL] ) * P::Central( frMNxN_RelDC[
CC] ) * P::ReftRight( frMNxN_RelDC[
RR] ) *
140 P::Diagonal( frMNxN_RelDC[
LD] ) * P::UpDown( frMNxN_RelDC[
DD] ) * P::Diagonal( frMNxN_RelDC[
RD] ) ;
142 if ( prMNxN_RelDC > prMNxN_RelMC ) { NewEnergy = NewEnergy_RelDC ; sum8 = sum8_RelDC ; }
143 if ( prMNxN_RelDC <= prMNxN_RelMC ) { NewEnergy = NewEnergy_RelMC ; sum8 = sum8_RelMC ; }
148 if ( NewEnergy == -1000000.0 ||
149 NewEnergy == -1000001.0 ||
150 NewEnergy == -2000000.0 ||
151 NewEnergy == -3000000.0 ||
152 NewEnergy == -3000001.0 ) { *AcceptFlag=
false ; NewEnergy = 0.0 ; }
159 if ( NewEnergy > 10.0 * sum8 ) { *AcceptFlag=
false ; NewEnergy = 0.0 ; }
double makeNxNMatrice_RelMC(DetIdT itID, const EcalRecHitCollection &hit_collection, double *MNxN_RelMC, bool *AccFlag)
double makeNxNMatrice_RelDC(DetIdT itID, const EcalRecHitCollection &hit_collection, double *MNxN_RelDC, bool *AccFlag)
double estimateEnergy(double *M3x3Input, double epsilon=0.0000001)
volatile std::atomic< bool > shutdown_flag false