00001
00002
00003 #include "StjTrgSoftEtThresholdBHT.h"
00004
00005 #include "StjTowerEnergyCutEt.h"
00006 #include "StjTowerEnergyCutBemcStatus.h"
00007 #include "StjTowerEnergyPrint.h"
00008 #include "StjTowerEnergyCutEt.h"
00009 #include "StjTowerEnergyCutAdc.h"
00010
00011 #include "StjBEMC.h"
00012
00013 #include "StjTrg.h"
00014
00015 #include <TVector3.h>
00016 #include <TMath.h>
00017
00018 ClassImp(StjTrgSoftEtThresholdBHT)
00019
00020 using namespace std;
00021
00022 StjTrgSoftEtThresholdBHT::StjTrgSoftEtThresholdBHT(StjBEMC* bemc, double minEt)
00023 : _bemc(bemc), _minEt(minEt), _runNumber(-1), _eventId(-1)
00024 {
00025 _cut.addCut( new StjTowerEnergyCutEt(minEt));
00026 _cut.addCut( new StjTowerEnergyCutBemcStatus(1));
00027 _cut.addCut( new StjTowerEnergyCutAdc(0, 2.0) );
00028 }
00029
00030 bool StjTrgSoftEtThresholdBHT::isNewEvent()
00031 {
00032 if(_runNumber != _trg->runNumber()) return true;
00033 if(_eventId != _trg->eventId()) return true;
00034 return false;
00035 }
00036
00037 void StjTrgSoftEtThresholdBHT::read()
00038 {
00039 _runNumber = _trg->runNumber();
00040 _eventId = _trg->eventId();
00041
00042 _towers.clear();
00043 _towerDsmAdc.clear();
00044 _towerAdc.clear();
00045 _towerEnergy.clear();
00046 _towerEt.clear();
00047
00048 StjTowerEnergyList energyList = _bemc->getEnergyList();
00049 energyList = _cut(energyList);
00050
00051
00052 _passed = ( ! energyList.empty() );
00053
00054 for(StjTowerEnergyList::const_iterator it = energyList.begin(); it != energyList.end(); ++it) {
00055 _towers.push_back((*it).towerId);
00056 _towerDsmAdc.push_back(0);
00057 _towerAdc.push_back((*it).adc);
00058 _towerEnergy.push_back((*it).energy);
00059 TVector3 vec3;
00060 vec3.SetPtEtaPhi((*it).towerR, (*it).towerEta, (*it).towerPhi);
00061 double Et = ((*it).energy)*TMath::Sin(vec3.Theta());
00062 _towerEt.push_back(Et);
00063 }
00064
00065 }
00066
00067 bool StjTrgSoftEtThresholdBHT::soft()
00068 {
00069 if(isNewEvent()) read();
00070 return _passed;
00071 }
00072
00073 vector<int> StjTrgSoftEtThresholdBHT::towers()
00074 {
00075 if(isNewEvent()) read();
00076 return _towers;
00077 }
00078
00079 vector<int> StjTrgSoftEtThresholdBHT::towerDsmAdc()
00080 {
00081 if(isNewEvent()) read();
00082 return _towerDsmAdc;
00083 }
00084
00085 vector<unsigned int> StjTrgSoftEtThresholdBHT::towerAdc()
00086 {
00087 if(isNewEvent()) read();
00088 return _towerAdc;
00089 }
00090
00091 vector<double> StjTrgSoftEtThresholdBHT::towerEnergy()
00092 {
00093 if(isNewEvent()) read();
00094 return _towerEnergy;
00095 }
00096
00097 vector<double> StjTrgSoftEtThresholdBHT::towerEt()
00098 {
00099 if(isNewEvent()) read();
00100 return _towerEt;
00101 }
00102
00103