00001 //#ifdef HAVE_NEW_IOSTREAMS 00002 // #include <sstream> 00003 // typedef std::stringstream my_sstream; 00004 //#else 00005 // #include <strstream> 00006 // typedef strstream my_sstream; 00007 //#endif 00008 00009 #include "HltSteerData/Signature.h" 00010 #include "GaudiKernel/StatusCode.h" 00011 00012 using HltProcessor::Signature; 00013 00015 Signature::Signature() : 00016 m_SignaturePrescale(1),m_SignatureForcedRate(1.),m_Id(0) { 00017 m_msgSvcProvider = MessageSvcProvider::instance(); 00018 } 00019 00020 Signature::Signature(std::vector<HltCriteria*> vec) : 00021 m_criteriaVec(vec), 00022 m_SignaturePrescale(1), 00023 m_SignatureForcedRate(1.), 00024 m_Id(0), 00025 m_Predecessor_Id(0), 00026 m_Successor_Id(0) 00027 { 00028 m_msgSvcProvider = MessageSvcProvider::instance(); 00029 } 00030 00032 Signature::~Signature() { 00033 int size = m_criteriaVec.size(); 00034 for (int i = 0; i < size; i++) delete m_criteriaVec[i]; 00035 } 00036 00038 void Signature::print() 00039 { 00040 MsgStream log(m_msgSvcProvider->msgSvc(), "Signature"); 00041 log << MSG::INFO << "< "; 00042 log << MSG::INFO << "> \t prescale " << m_SignaturePrescale 00043 << " \t forcedAccept " << m_SignatureForcedRate 00044 << " \t id " << m_Id << endreq; 00045 } 00046 00047 void Signature::makeVectors(HltCriteria* criteria) { 00048 m_criteriaVec.push_back(criteria); 00049 } 00050 00052 int Signature::id() const { return m_Id; } 00053 00055 void Signature::setId(int id){ m_Id=id; } 00056 00058 float Signature::forcedAccept() const 00059 { 00060 return m_SignatureForcedRate; 00061 } 00062 00064 void Signature::setForcedAccept(float value) 00065 { 00066 m_SignatureForcedRate = value; 00067 } 00068 00070 int Signature::prescale() const 00071 { 00072 return m_SignaturePrescale; 00073 } 00074 00076 void Signature::setPrescale(int value) 00077 { 00078 m_SignaturePrescale = value; 00079 } 00080 00082 bool Signature::isVeto() const 00083 { 00084 return m_SignatureVeto; 00085 } 00086 00088 void Signature::setVeto(bool value) 00089 { 00090 m_SignatureVeto = value; 00091 } 00092 00093 int Signature::predecessorId(){ 00094 return m_Predecessor_Id; 00095 } 00096 00097 int Signature::successorId(){ 00098 return m_Successor_Id; 00099 } 00100 00101 void Signature::setPredecessorId(int id){ 00102 m_Predecessor_Id=id; 00103 } 00104 00105 void Signature::setSuccessorId(int id){ 00106 m_Successor_Id=id; 00107 } 00108 00109 void Signature::setSigLabel(std::string label) { 00110 m_Sig_label = label; 00111 } 00112 00113 std::string Signature::label() const { 00114 return m_Sig_label; 00115 } 00116 00117 int Signature::isCriteriaMatched() { 00118 int size = m_criteriaVec.size(); 00119 m_midMark=""; 00120 for (int i = 0; i < size; i++) { 00121 if (m_criteriaVec[i]->satisfyCriteria()) { 00122 m_result = m_criteriaVec[i]->getBehaviour(); 00123 std::string::size_type separator=m_result.find('_'); 00124 std::string perform = m_result.substr(0, separator); 00125 if(perform=="continue"){ 00126 m_midMark = m_result.substr(separator+1); 00127 } 00128 else { 00129 return m_criteriaVec[i]->idCriteria(); 00130 } 00131 } 00132 } 00133 m_result = ""; 00134 return -1; 00135 } 00136