00001
00002
00003
00004
00005
00006
00007 #include "StjTowerEnergyCorrectionForTracksFraction.h"
00008
00009 ClassImp(StjTowerEnergyCorrectionForTracksFraction);
00010
00011 StjTowerEnergyList StjTowerEnergyCorrectionForTracksFraction::Do(const StjTowerEnergyList& energyDepositList, const StjTrackList& trackList)
00012 {
00013 StjTowerEnergyList elist;
00014
00015 for (StjTowerEnergyList::const_iterator iTower = energyDepositList.begin(); iTower != energyDepositList.end(); ++iTower) {
00016 StjTowerEnergy tower = *iTower;
00017
00018 for (StjTrackList::const_iterator iTrack = trackList.begin(); iTrack != trackList.end(); ++iTrack) {
00019 const StjTrack& track = *iTrack;
00020
00021 if (track.exitDetectorId == tower.detectorId && track.exitTowerId == tower.towerId) {
00022
00023 tower.energy -= mFraction * track.pt * cosh(track.eta);
00024 }
00025 }
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 if (tower.energy < 0) tower.energy = 1e-10;
00038 elist.push_back(tower);
00039 }
00040 return elist;
00041 }