#include <MyVGeometryParameter.hh>
Public Member Functions | |
MyVGeometryParameter (G4String name, G4String opt="") | |
virtual | ~MyVGeometryParameter (void) |
virtual void | InitFromFile (G4String) |
virtual void | Calculate () |
virtual void | Dump () |
int | GetValue (G4String) |
void | Preset () |
bool | CheckInfo () |
void | DumpInfo () |
void | get_RepCont (G4String RepCont, G4int &SRepNo, G4int &RepNo) |
bool | ISEMPTY (G4String) |
void | DEBUG (G4String content, int level=1) |
bool | get_checkoverlap () |
int | get_VerboseLevel () |
G4String | get_Name () |
G4String | get_filename () |
void | set_checkoverlap (bool val) |
void | set_VerboseLevel (int val) |
void | set_GeometryParameterMessenger (MyVGeometryParameterMessenger *val) |
void | set_Name (G4String val) |
void | set_filename (G4String val) |
std::vector< G4String > | GetWords (G4String formula) |
bool | FindMacro (G4String word, G4String &value) |
void | Replace (G4String &formula, G4String word, G4String value) |
double | CalFormula (G4String formula, int iRep=0) |
G4String | ReplaceMacro (G4String formula) |
Static Public Attributes | |
static std::vector< G4String > | knownValueNames |
static std::vector< G4String > | knownValues |
Private Attributes | |
bool | checkoverlap |
int | fVerboseLevel |
G4String | m_filename |
G4String | m_Name |
MyVGeometryParameterMessenger * | m_GeometryParameterMessenger |
Definition at line 24 of file MyVGeometryParameter.hh.
MyVGeometryParameter::MyVGeometryParameter | ( | G4String | name, | |
G4String | opt = "" | |||
) |
Definition at line 22 of file MyVGeometryParameter.cc.
References set_Name().
00023 : MyConfigure() 00024 { 00025 if ( opt == "" ){ 00026 std::cout<<"MyVGeometryParameter is a virtual class, should be called with opt not empty!"<<std::endl; 00027 G4Exception("MyVGeometryParameter::MyVGeometryParameter()","Run0031", 00028 FatalException, "illegal construction."); 00029 } 00030 set_Name(name); 00031 }
MyVGeometryParameter::~MyVGeometryParameter | ( | void | ) | [virtual] |
Definition at line 33 of file MyVGeometryParameter.cc.
References m_GeometryParameterMessenger.
00033 { 00034 std::cout<<"======>In ~MyVGeometryParameter, delete GeometryParameterMessenger at ("<<(void*)m_GeometryParameterMessenger<<")!"<<std::endl; 00035 delete m_GeometryParameterMessenger; 00036 }
virtual void MyVGeometryParameter::Calculate | ( | ) | [inline, virtual] |
Reimplemented in SimpleGeometryParameter.
Definition at line 33 of file MyVGeometryParameter.hh.
double MyConfigure::CalFormula | ( | G4String | formula, | |
int | iRep = 0 | |||
) | [inherited] |
Definition at line 23 of file MyConfigure.cc.
Referenced by SimpleGeometryParameter::Calculate(), and PrimaryGeneratorAction::ReadCard().
00023 { 00024 // std::cout<<"TO Calculate for: \""<<formula<<"\" "<<iRep<<std::endl; // to be deleted 00025 // formula = ReplaceMacro(formula); 00026 TF1 *f1 = new TF1("f1", formula); 00027 double value = f1->Eval(iRep); 00028 // std::cout<<"\t=>"<<value<<std::endl; 00029 delete f1; 00030 return value; 00031 }
bool MyVGeometryParameter::CheckInfo | ( | ) |
Reimplemented in SimpleGeometryParameter.
Definition at line 39 of file MyVGeometryParameter.cc.
void MyVGeometryParameter::DEBUG | ( | G4String | content, | |
int | level = 1 | |||
) | [inline] |
Definition at line 54 of file MyVGeometryParameter.hh.
Referenced by SimpleGeometryParameter::get_index(), and SimpleGeometryParameter::InitFromFile().
virtual void MyVGeometryParameter::Dump | ( | ) | [inline, virtual] |
Reimplemented in SimpleGeometryParameter.
Definition at line 35 of file MyVGeometryParameter.hh.
void MyVGeometryParameter::DumpInfo | ( | void | ) |
Reimplemented in SimpleGeometryParameter.
Definition at line 71 of file MyVGeometryParameter.cc.
References checkoverlap, fVerboseLevel, m_filename, and m_Name.
00071 { 00072 std::cout<<"*********************************"<<m_Name<<" Geometry Info***********************************"<<std::endl; 00073 std::cout<<"------General info:--------"<<std::endl; 00074 std::cout<<" Initialized from \""<<m_filename<<"\""<<std::endl; 00075 std::cout<<" checkoverlap? "<<(checkoverlap?"yes":"no")<<std::endl; 00076 std::cout<<" VerboseLevel = "<<fVerboseLevel<<std::endl; 00077 }
bool MyConfigure::FindMacro | ( | G4String | word, | |
G4String & | value | |||
) | [inherited] |
Definition at line 87 of file MyConfigure.cc.
References MyConfigure::knownValueNames, and MyConfigure::knownValues.
Referenced by MyConfigure::Replace(), and MyConfigure::ReplaceMacro().
00087 { 00088 bool found = false; 00089 for (int i = 0; i< knownValues.size(); i++){ 00090 if (knownValueNames[i]==word){ 00091 value = knownValues[i]; 00092 found = true; 00093 break; 00094 } 00095 } 00096 return found; 00097 }
bool MyVGeometryParameter::get_checkoverlap | ( | ) | [inline] |
Definition at line 66 of file MyVGeometryParameter.hh.
References checkoverlap.
Referenced by SimpleGeometrySvc::PlaceVolumes().
00066 {return checkoverlap;}
G4String MyVGeometryParameter::get_filename | ( | ) | [inline] |
Definition at line 69 of file MyVGeometryParameter.hh.
References m_filename.
00069 { return m_filename; }
G4String MyVGeometryParameter::get_Name | ( | ) | [inline] |
void MyVGeometryParameter::get_RepCont | ( | G4String | RepCont, | |
G4int & | SRepNo, | |||
G4int & | RepNo | |||
) |
Definition at line 84 of file MyVGeometryParameter.cc.
References MyString2Anything::get_I().
Referenced by SimpleGeometryParameter::GetValue().
00084 { 00085 size_t sLast = RepCont.last(','); 00086 if(sLast!=G4String::npos){ 00087 G4String part1 = RepCont.substr(0,sLast); 00088 G4String part2 = RepCont.substr(sLast+1,RepCont.length()-sLast-1); 00089 MyString2Anything::get_I(part1,SRepNo); 00090 MyString2Anything::get_I(part2,RepNo); 00091 } 00092 else{ // not found 00093 sLast = RepCont.last('-'); 00094 if (sLast==G4String::npos){// not found 00095 sLast = RepCont.last('~'); 00096 } 00097 if (sLast!=G4String::npos){ 00098 G4String part1 = RepCont.substr(0,sLast); 00099 G4String part2 = RepCont.substr(sLast+1,RepCont.length()-sLast-1); 00100 MyString2Anything::get_I(part1,SRepNo); 00101 G4int endNo; 00102 MyString2Anything::get_I(part2,endNo); 00103 RepNo = endNo - SRepNo + 1; 00104 } 00105 else{// not found 00106 SRepNo = 0; 00107 MyString2Anything::get_I(RepCont,RepNo); 00108 } 00109 } 00110 // std::cout<<"in get_RepCont: \""<<RepCont<<"\" -> ("<<SRepNo<<","<<RepNo<<")"<<std::endl; // to be deleted 00111 }
int MyVGeometryParameter::get_VerboseLevel | ( | ) | [inline] |
Definition at line 67 of file MyVGeometryParameter.hh.
References fVerboseLevel.
00067 {return fVerboseLevel;}
int MyVGeometryParameter::GetValue | ( | G4String | s_card | ) |
Reimplemented in SimpleGeometryParameter.
Definition at line 53 of file MyVGeometryParameter.cc.
References checkoverlap, and fVerboseLevel.
Referenced by SimpleGeometryParameter::GetValue().
00053 { 00054 int status = 0; 00055 std::stringstream buf_card; 00056 buf_card.str(""); 00057 buf_card.clear(); 00058 buf_card<<s_card; 00059 G4String name; 00060 buf_card>>name; 00061 G4String s_para; 00062 if( name == "VerboseLevel:" ) buf_card>>fVerboseLevel; 00063 else if( name == "checkoverlap" ) checkoverlap = true; 00064 else status = 1; 00065 buf_card.str(""); 00066 buf_card.clear(); 00067 return status; 00068 }
std::vector< G4String > MyConfigure::GetWords | ( | G4String | formula | ) | [inherited] |
Definition at line 48 of file MyConfigure.cc.
Referenced by MyConfigure::ReplaceMacro().
00048 { 00049 std::vector<G4String> words; 00050 words.clear(); 00051 const char* cformula = formula.c_str(); 00052 int length = strlen(cformula); 00053 char temp[1240]; 00054 int tempoffset = 0; 00055 for ( int offset = 0; offset < length; offset++ ){ 00056 char c = cformula[offset]; 00057 bool isword = false; 00058 if (c>='a'&&c<='z' 00059 ||c>='A'&&c<='Z' 00060 ||c>='0'&&c<='9' 00061 ||c=='_' 00062 ){ 00063 temp[tempoffset++] = cformula[offset]; 00064 isword = true; 00065 } 00066 if (!isword||offset==length-1){ 00067 if (tempoffset>0){ 00068 temp[tempoffset++] = '\0'; 00069 tempoffset=0; 00070 G4String word = temp; 00071 bool found = false; 00072 for(int iWord = 0; iWord<words.size(); iWord++){ 00073 if (words[iWord]==word){ 00074 found = true; 00075 break; 00076 } 00077 } 00078 if (!found){ 00079 words.push_back(word); 00080 } 00081 } 00082 } 00083 } 00084 return words; 00085 }
virtual void MyVGeometryParameter::InitFromFile | ( | G4String | ) | [inline, virtual] |
Reimplemented in SimpleGeometryParameter.
Definition at line 31 of file MyVGeometryParameter.hh.
Referenced by MyVGeometryParameterMessenger::MySetNewValue(), and MyVGeometrySvc::ReadCard().
bool MyVGeometryParameter::ISEMPTY | ( | G4String | s_card | ) |
Definition at line 115 of file MyVGeometryParameter.cc.
Referenced by SimpleGeometryParameter::InitFromFile().
00115 { 00116 bool flag = false; 00117 const char* c_card = s_card.c_str(); 00118 G4int length = strlen(c_card); 00119 G4int offset = 0; 00120 for ( ; offset < length; offset++ ){ 00121 if ( c_card[offset] != ' ' ) break; 00122 } 00123 if ( c_card[offset] == '#' || (c_card[offset] == '/' && c_card[offset+1] == '/') || length - offset == 0 ){ 00124 flag = true; 00125 } 00126 return flag; 00127 }
void MyVGeometryParameter::Preset | ( | ) |
Reimplemented in SimpleGeometryParameter.
Definition at line 47 of file MyVGeometryParameter.cc.
References checkoverlap, and fVerboseLevel.
00047 { 00048 fVerboseLevel = 0; 00049 checkoverlap = false; 00050 }
void MyConfigure::Replace | ( | G4String & | formula, | |
G4String | word, | |||
G4String | value | |||
) | [inherited] |
Definition at line 99 of file MyConfigure.cc.
References MyConfigure::FindMacro().
Referenced by MyConfigure::ReplaceMacro().
00099 { 00100 // std::cout<<"-- \""<<formula<<"\""<<std::endl; // to be deleted 00101 G4String newform = ""; 00102 const char* cformula = formula.c_str(); 00103 int length = strlen(cformula); 00104 char temp[1024]; 00105 int tempoffset = 0; 00106 char cnewform[1024]; 00107 int newformoffset = 0; 00108 for ( int offset = 0; offset < length; offset++ ){ 00109 char c = cformula[offset]; 00110 bool isword = false; 00111 if (c>='a'&&c<='z' 00112 ||c>='A'&&c<='Z' 00113 ||c>='0'&&c<='9' 00114 ||c=='_' 00115 ){ 00116 temp[tempoffset++] = cformula[offset]; 00117 isword = true; 00118 } 00119 if (!isword||offset==length-1){ 00120 if (tempoffset>0){ 00121 temp[tempoffset] = '\0'; 00122 tempoffset=0; 00123 if (newformoffset>0){ 00124 cnewform[newformoffset] = '\0'; 00125 newformoffset=0; 00126 G4String newformtemp = cnewform; 00127 newform=newform+newformtemp; 00128 } 00129 G4String word = temp; 00130 // std::cout<<" \""<<word<<"\""<<std::endl; // to be deleted 00131 G4String newword; 00132 bool found = FindMacro(word,newword); 00133 if (found){ 00134 newform=newform+"("+newword+")"; 00135 } 00136 else{ 00137 newform=newform+word; 00138 } 00139 // std::cout<<" to \""<<newword<<"\""<<std::endl; // to be deleted 00140 } 00141 if(!isword){ 00142 cnewform[newformoffset++] = cformula[offset]; 00143 } 00144 if (offset==length-1){ 00145 cnewform[newformoffset] = '\0'; 00146 G4String newformtemp = cnewform; 00147 newform=newform+newformtemp; 00148 } 00149 } 00150 } 00151 // std::cout<<" -->\""<<newform<<"\""<<std::endl; // to be deleted 00152 formula = newform; 00153 }
G4String MyConfigure::ReplaceMacro | ( | G4String | formula | ) | [inherited] |
Definition at line 33 of file MyConfigure.cc.
References MyConfigure::FindMacro(), MyConfigure::GetWords(), and MyConfigure::Replace().
Referenced by SimpleGeometryParameter::GetValue(), and PrimaryGeneratorAction::ReadCard().
00033 { 00034 // std::cout<<"TO replace for: \""<<formula<<"\""<<std::endl; // to be deleted 00035 std::vector<G4String> words = GetWords(formula); 00036 // std::cout<<" "<<words.size()<<" words"<<std::endl; // to be deleted 00037 for (int iWord = 0; iWord < words.size(); iWord++ ){ 00038 // std::cout<<" "<<iWord<<std::endl; // to be deleted 00039 G4String value; 00040 if (FindMacro(words[iWord],value)){ 00041 Replace(formula,words[iWord],value); 00042 } 00043 } 00044 // std::cout<<"\t=>"<<formula<<std::endl; 00045 return formula; 00046 }
void MyVGeometryParameter::set_checkoverlap | ( | bool | val | ) | [inline] |
Definition at line 73 of file MyVGeometryParameter.hh.
References checkoverlap.
Referenced by MyVGeometryParameterMessenger::MySetNewValue().
00073 { checkoverlap = val;}
void MyVGeometryParameter::set_filename | ( | G4String | val | ) | [inline] |
Definition at line 77 of file MyVGeometryParameter.hh.
References m_filename.
Referenced by SimpleGeometryParameter::InitFromFile().
00077 { m_filename = val; }
void MyVGeometryParameter::set_GeometryParameterMessenger | ( | MyVGeometryParameterMessenger * | val | ) | [inline] |
Definition at line 75 of file MyVGeometryParameter.hh.
References m_GeometryParameterMessenger.
Referenced by SimpleGeometryParameter::SimpleGeometryParameter().
00075 {m_GeometryParameterMessenger = val;};
void MyVGeometryParameter::set_Name | ( | G4String | val | ) | [inline] |
Definition at line 76 of file MyVGeometryParameter.hh.
References m_Name.
Referenced by MyVGeometryParameter().
00076 { m_Name = val; }
void MyVGeometryParameter::set_VerboseLevel | ( | int | val | ) | [inline] |
Definition at line 74 of file MyVGeometryParameter.hh.
References fVerboseLevel.
Referenced by MyVGeometryParameterMessenger::MySetNewValue().
00074 { fVerboseLevel = val;}
bool MyVGeometryParameter::checkoverlap [private] |
Definition at line 81 of file MyVGeometryParameter.hh.
Referenced by DumpInfo(), get_checkoverlap(), GetValue(), Preset(), and set_checkoverlap().
int MyVGeometryParameter::fVerboseLevel [private] |
Definition at line 82 of file MyVGeometryParameter.hh.
Referenced by DumpInfo(), get_VerboseLevel(), GetValue(), Preset(), and set_VerboseLevel().
std::vector< G4String > MyConfigure::knownValueNames [static, inherited] |
Definition at line 24 of file MyConfigure.hh.
Referenced by MyConfigure::FindMacro(), SimpleGeometryParameter::GetValue(), and PrimaryGeneratorAction::ReadCard().
std::vector< G4String > MyConfigure::knownValues [static, inherited] |
Definition at line 25 of file MyConfigure.hh.
Referenced by MyConfigure::FindMacro(), SimpleGeometryParameter::GetValue(), and PrimaryGeneratorAction::ReadCard().
G4String MyVGeometryParameter::m_filename [private] |
Definition at line 84 of file MyVGeometryParameter.hh.
Referenced by DumpInfo(), get_filename(), and set_filename().
Definition at line 86 of file MyVGeometryParameter.hh.
Referenced by set_GeometryParameterMessenger(), and ~MyVGeometryParameter().
G4String MyVGeometryParameter::m_Name [private] |
Definition at line 85 of file MyVGeometryParameter.hh.
Referenced by DumpInfo(), get_Name(), and set_Name().