14 RecEmcShowerMap::iterator iShowerMap;
15 for ( iShowerMap = aShowerMap.begin(); iShowerMap != aShowerMap.end(); iShowerMap++ )
19 double eShower = iShowerMap->second.e5x5();
21 if ( eShower > 0 ) { matWindow = 0.01277 + 0.004268 / sqrt( eShower ); }
23 double phi = iShowerMap->second.phi();
24 phi = phi < 0 ? phi + CLHEP::twopi : phi;
26 int nphi1 = (int)( phi * 88. / CLHEP::twopi );
27 int nphi2 = (int)( phi * 88. / CLHEP::twopi + 0.5 );
32 double emax = tofHitMap[nphi1].Energy();
33 if ( tofHitMap[nphi1 - 1].Energy() > emax )
35 emax = tofHitMap[nphi1 - 1].Energy();
38 if ( tofHitMap[nphi1 + 1].Energy() > emax )
40 emax = tofHitMap[nphi1 + 1].Energy();
46 emax = tofHitMap[nphi2].Energy();
47 if ( tofHitMap[nphi2 - 1].Energy() > emax )
49 emax = tofHitMap[nphi2 - 1].Energy();
52 if ( tofHitMap[nphi2 + 1].Energy() > emax )
54 emax = tofHitMap[nphi2 + 1].Energy();
61 int nphi[6] = { nphi1 - 1, nphi1, nphi1 + 1, nphi2 - 1, nphi2, nphi2 + 1 };
63 for (
int i = 0; i < 6; i++ )
66 if ( tofHitMap[nphi[i]].Energy() <= 0 )
continue;
68 HepPoint3D pos = tofHitMap[nphi[i]].Position();
78 if ( fabs( pos.theta() - iShowerMap->second.theta() ) < 3 * matWindow )
80 etof2x3 += tofHitMap[nphi[i]].Energy();
81 if ( i == 1 || i == 4 ) { etof2x1 += tofHitMap[nphi[i]].Energy(); }
84 tofHitMap[nphi[i]].Energy( 0 );
87 double ecorr = iShowerMap->second.e5x5() + etof2x3 / GeV;
89 iShowerMap->second.ETof2x3( etof2x3 / GeV );
90 iShowerMap->second.ETof2x1( etof2x1 / GeV );
91 iShowerMap->second.setEnergy(
ECorrection( ecorr ) );