#include "tsim_l2stt/CombStripFEAddress.hpp" #include "smtutil/StripFEAddress.hpp" #include using namespace std; CombStripFEAddress::CombStripFEAddress(){} CombStripFEAddress::~CombStripFEAddress(){} CombStripFEAddress::CombStripFEAddress(StripFEAddress StripFEAddr[48]) { for(int i=0;i<48;i++)_StripFEAddress_all[i] = StripFEAddr[i]; } StripFEAddress CombStripFEAddress::get_StripFEAddress(int ib, int layer) const { return _StripFEAddress_all[(ib-1)*8+layer-1]; } StripFEAddress* CombStripFEAddress::get_StripFEAddress_all() { return _StripFEAddress_all; } void CombStripFEAddress::set_StripFEAddress(int ib, int layer, StripFEAddress StripFEAddr) { _StripFEAddress_all[(ib-1)*8+layer-1] = StripFEAddr; } void CombStripFEAddress::set_layer_min(int ib, int layer, float min_phi, StripFEAddress StripFEAddr) { if(ib<=6 && layer <= 8 && layer>0){ _Smt_layer_min_phi[(ib-1)*8+layer-1] = min_phi; _StripFEAddress_all[(ib-1)*8+layer-1] = StripFEAddr; } } float CombStripFEAddress::get_layer_phi_min(int ib, int layer) const { float min_phi=-999.0; if(ib<=6 && layer<=8 && layer>0){ min_phi = _Smt_layer_min_phi[(ib-1)*8+layer-1]; } return min_phi; } void CombStripFEAddress::get_layer_min(int ib, int layer, float& min_phi, StripFEAddress& StripFEAddr) const { if(ib<=6 && layer<=8 && layer>0){ min_phi = _Smt_layer_min_phi[(ib-1)*8+layer-1]; StripFEAddr = _StripFEAddress_all[(ib-1)*8+layer-1]; } } float CombStripFEAddress::delta_phi(float phi1, float phi2) const { float pi = 3.141592654; float dphi; dphi = abs(phi1-phi2); if(dphi > pi)dphi = 2*pi-dphi; return dphi; } bool CombStripFEAddress::operator<(const CombStripFEAddress& address) const { float aphidiff, bphidiff; float aphi1,aphi8, bphi1,bphi8; aphi1 = this->get_layer_phi_min(1,1); aphi8 = this->get_layer_phi_min(1,8); bphi1 = address.get_layer_phi_min(1,1); bphi8 = address.get_layer_phi_min(1,8); aphidiff = abs(delta_phi(aphi1,aphi8)); bphidiff = abs(delta_phi(bphi1,bphi8)); return aphidiff>bphidiff; } ostream& operator<<(std::ostream& os, const CombStripFEAddress& add) { float phi; StripFEAddress StripFEAddr; int ib=1; os << " PAcked address for all the 8 layer strips are..."<< endl; for(ib = 0; ib<6; ib++){ for(int i = 0; i<8; i++){ add.get_layer_min(ib+1, i+1, phi, StripFEAddr); phi = add.get_layer_phi_min(ib+1, i+1); os <get_layer_min(ib+1, i+1, phi, StripFEAddr); phi = this->get_layer_phi_min(ib+1, i+1); os<