112 double NewEnergy = 0.0;
114 double NewEnergy_RelMC = 0.0;
115 double NewEnergy_RelDC = 0.0;
117 double MNxN_RelMC[9] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } ;
118 double MNxN_RelDC[9] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 } ;
127 if (sum8_RelDC > Sum8Cut && sum8_RelMC > Sum8Cut) {
134 double SumMNxN_RelMC = MNxN_RelMC[
LU] + MNxN_RelMC[
UU] + MNxN_RelMC[
RU] +
135 MNxN_RelMC[
LL] + MNxN_RelMC[
CC] + MNxN_RelMC[
RR] +
136 MNxN_RelMC[
LD] + MNxN_RelMC[
DD] + MNxN_RelMC[
RD] ;
138 double frMNxN_RelMC[9];
for (
int i=0;
i<9;
i++) { frMNxN_RelMC[
i] = MNxN_RelMC[
i] / SumMNxN_RelMC ; }
140 double prMNxN_RelMC = P::Diagonal( frMNxN_RelMC[
LU] ) * P::UpDown( frMNxN_RelMC[
UU] ) * P::Diagonal( frMNxN_RelMC[
RU] ) *
141 P::ReftRight( frMNxN_RelMC[
LL] ) * P::Central( frMNxN_RelMC[
CC] ) * P::ReftRight( frMNxN_RelMC[
RR] ) *
142 P::Diagonal( frMNxN_RelMC[
LD] ) * P::UpDown( frMNxN_RelMC[
DD] ) * P::Diagonal( frMNxN_RelMC[
RD] ) ;
144 double SumMNxN_RelDC = MNxN_RelDC[
LU] + MNxN_RelDC[
UU] + MNxN_RelDC[
RU] +
145 MNxN_RelDC[
LL] + MNxN_RelDC[
CC] + MNxN_RelDC[
RR] +
146 MNxN_RelDC[
LD] + MNxN_RelDC[
DD] + MNxN_RelDC[
RD] ;
148 double frMNxN_RelDC[9];
for (
int i=0;
i<9;
i++) { frMNxN_RelDC[
i] = MNxN_RelDC[
i] / SumMNxN_RelDC ; }
150 double prMNxN_RelDC = P::Diagonal( frMNxN_RelDC[
LU] ) * P::UpDown( frMNxN_RelDC[
UU] ) * P::Diagonal( frMNxN_RelDC[
RU] ) *
151 P::ReftRight( frMNxN_RelDC[
LL] ) * P::Central( frMNxN_RelDC[
CC] ) * P::ReftRight( frMNxN_RelDC[
RR] ) *
152 P::Diagonal( frMNxN_RelDC[
LD] ) * P::UpDown( frMNxN_RelDC[
DD] ) * P::Diagonal( frMNxN_RelDC[
RD] ) ;
154 if ( prMNxN_RelDC > prMNxN_RelMC ) { NewEnergy = NewEnergy_RelDC ; sum8 = sum8_RelDC ; }
155 if ( prMNxN_RelDC <= prMNxN_RelMC ) { NewEnergy = NewEnergy_RelMC ; sum8 = sum8_RelMC ; }
160 if ( NewEnergy == -1000000.0 ||
161 NewEnergy == -1000001.0 ||
162 NewEnergy == -2000000.0 ||
163 NewEnergy == -3000000.0 ||
164 NewEnergy == -3000001.0 ) { *AcceptFlag=
false ; NewEnergy = 0.0 ; }
171 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