MyVGeometryParameter Class Reference

#include <MyVGeometryParameter.hh>

Inheritance diagram for MyVGeometryParameter:
MyConfigure SimpleGeometryParameter

List of all members.

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
MyVGeometryParameterMessengerm_GeometryParameterMessenger

Detailed Description

Definition at line 24 of file MyVGeometryParameter.hh.


Constructor & Destructor Documentation

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 }


Member Function Documentation

virtual void MyVGeometryParameter::Calculate (  )  [inline, virtual]

Reimplemented in SimpleGeometryParameter.

Definition at line 33 of file MyVGeometryParameter.hh.

00033 {};

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.

00039                                     {
00040         bool flag = false;// false means no problem
00041 
00042         //examine
00043         return flag;
00044 }

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().

00054                                                            {
00055                         if (level >= 1){
00056                                 G4Exception("MyVGeometryParameter","Run0031",
00057                                                 FatalException, content);
00058                         }
00059                         else if (level == 0){
00060                                 std::cout<<"In MyVGeometryParameter, "<<content<<std::endl;
00061                         }
00062                 }

virtual void MyVGeometryParameter::Dump (  )  [inline, virtual]

Reimplemented in SimpleGeometryParameter.

Definition at line 35 of file MyVGeometryParameter.hh.

00035 {};

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]

Definition at line 68 of file MyVGeometryParameter.hh.

References m_Name.

00068 { return m_Name; }

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().

00031 {};//Get necessary parameters from given file

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]
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;}


Member Data Documentation

std::vector< G4String > MyConfigure::knownValueNames [static, inherited]
std::vector< G4String > MyConfigure::knownValues [static, inherited]

Definition at line 84 of file MyVGeometryParameter.hh.

Referenced by DumpInfo(), get_filename(), and set_filename().

G4String MyVGeometryParameter::m_Name [private]

Definition at line 85 of file MyVGeometryParameter.hh.

Referenced by DumpInfo(), get_Name(), and set_Name().


The documentation for this class was generated from the following files:

Generated on 15 Jun 2016 for g4sim by  doxygen 1.6.1