00001
00002
00003 #include "StjTowerEnergyToTLorentzVector.h"
00004
00005 #include "StjTowerEnergyList.h"
00006
00007 ClassImp(StjTowerEnergyToTLorentzVector)
00008
00009 TLorentzVector StjTowerEnergyToTLorentzVector::operator()(const StjTowerEnergy& deposit)
00010 {
00011 TVector3 towerLocation;
00012 towerLocation.SetPtEtaPhi(deposit.towerR, deposit.towerEta, deposit.towerPhi);
00013 TVector3 vertex(deposit.vertexX, deposit.vertexY, deposit.vertexZ);
00014
00015 TVector3 momentum = towerLocation - vertex;
00016
00017 double pMag = (deposit.energy > _mass) ? sqrt(deposit.energy*deposit.energy - _mass*_mass) : deposit.energy;
00018
00019 momentum.SetMag(pMag);
00020 TLorentzVector ret(momentum.x(), momentum.y(), momentum.z(), deposit.energy);
00021 return ret;
00022 }