00001
00002
00003 #include "StjTrgDisableTowerJP.h"
00004
00005 #include "StjTrgBEMCJetPatchTowerIdMap.h"
00006 #include "StjTowerEnergyList.h"
00007 #include "StjBEMC.h"
00008 #include "StjTowerEnergyCutEt.h"
00009 #include "StjTowerEnergyListCut.h"
00010
00011 #include <TVector3.h>
00012 #include <TMath.h>
00013
00014 #include <iostream>
00015
00016 ClassImp(StjTrgDisableTowerJP)
00017
00018 using namespace std;
00019
00020 void StjTrgDisableTowerJP::read() const
00021 {
00022 _jetPatches.clear();
00023 _jetPatchDsmAdc.clear();
00024 _jetPatchAdc.clear();
00025 _jetPatchEnergy.clear();
00026 _jetPatchEt.clear();
00027
00028 if( ! _src->soft() )
00029 {
00030 _passed = false;
00031 return;
00032 }
00033
00034 vector<int> srcJetPatchs = _src->jetPatches();
00035 vector<int> srcJetPatchDsmAdc = _src->jetPatchDsmAdc();
00036
00037 StjTowerEnergyListCut cut;
00038 cut.addCut( new StjTowerEnergyCutEt(0.2) );
00039
00040 StjTowerEnergyList energyList = _bemc->getEnergyList();
00041 energyList = cut(energyList);
00042
00043 for(size_t i = 0; i != srcJetPatchs.size(); ++i)
00044 {
00045 _jetPatches.push_back(srcJetPatchs[i]);
00046 _jetPatchDsmAdc.push_back(srcJetPatchDsmAdc[i]);
00047 unsigned int adc = 0;
00048 double energy = 0;
00049 double et = 0;
00050 for(StjTowerEnergyList::const_iterator it = energyList.begin(); it != energyList.end(); ++it)
00051 {
00052 if( _badTowerIdSet.count((*it).towerId) ) continue;
00053 if(srcJetPatchs[i] == _jpTowerMap->getJetPatchIdForTower((*it).towerId))
00054 {
00055 adc += (*it).adc;
00056 energy += (*it).energy;
00057 TVector3 vec3;
00058 vec3.SetPtEtaPhi((*it).towerR, (*it).towerEta, (*it).towerPhi);
00059 et += ((*it).energy)*TMath::Sin(vec3.Theta());
00060 }
00061 }
00062 _jetPatchAdc.push_back(adc);
00063 _jetPatchEnergy.push_back(energy);
00064 _jetPatchEt.push_back(et);
00065 }
00066
00067 _passed = ( ! _jetPatches.empty() );
00068 }
00069
00070 bool StjTrgDisableTowerJP::soft() const
00071 {
00072 readIfNewEvent();
00073 return _passed;
00074 }
00075
00076 vector<int> StjTrgDisableTowerJP::jetPatches()
00077 {
00078 readIfNewEvent();
00079 return _jetPatches;
00080 }
00081
00082 vector<int> StjTrgDisableTowerJP::jetPatchDsmAdc()
00083 {
00084 readIfNewEvent();
00085 return _jetPatchDsmAdc;
00086 }
00087
00088 vector<unsigned int> StjTrgDisableTowerJP::jetPatchAdc()
00089 {
00090 readIfNewEvent();
00091 return _jetPatchAdc;
00092 }
00093
00094 vector<double> StjTrgDisableTowerJP::jetPatchEnergy()
00095 {
00096 readIfNewEvent();
00097 return _jetPatchEnergy;
00098 }
00099
00100 vector<double> StjTrgDisableTowerJP::jetPatchEt()
00101 {
00102 readIfNewEvent();
00103 return _jetPatchEt;
00104 }
00105