00001 //BOOST --- BESIII Object_Oriented Simulation Tool // 00002 //Description: 00003 //Author: Caogf 00004 //Created: June, 2008 00005 //Modified: 00006 //Comment: 00007 //---------------------------------------------------------------------// 00008 //$ID: BesPipParameter.cc 00009 00010 #include "BesPipParameter.hh" 00011 #include <fstream> 00012 #include <strstream> 00013 #include "ReadBoostRoot.hh" 00014 using namespace std; 00015 00016 BesPipParameter::BesPipParameter() 00017 { 00018 } 00019 BesPipParameter::~BesPipParameter() 00020 { 00021 } 00022 void BesPipParameter::ReadData() 00023 { 00024 G4String GeometryPath = getenv("BESSIMROOT"); 00025 if(!GeometryPath){ 00026 G4Exception("BOOST environment not set!"); 00027 } 00028 GeometryPath += "/dat/BesPip.txt"; 00029 00030 ifstream fin; 00031 fin.open(GeometryPath); 00032 00033 const int maxCharOfOneLine=255; 00034 char temp[maxCharOfOneLine],*p; 00035 int lineNo=0,inputNo=0; 00036 while(fin.peek()!=EOF) 00037 { 00038 fin.getline(temp,maxCharOfOneLine); 00039 p=temp; 00040 lineNo++; 00041 while(*p!='\0') 00042 { 00043 if(*p=='#') 00044 { 00045 *p='\0'; //delete the comments. 00046 break; 00047 } 00048 p++; 00049 } 00050 p=temp; //reset the pointer to the beginning of the string. 00051 while(*p==' '||*p=='\t')p++; 00052 if(*p=='\0')continue; 00053 inputNo++; 00054 switch(inputNo) 00055 { 00056 case 1: 00057 istrstream(p)>>goldLayer[0]>>goldLayer[1]>>goldLayer[2]; 00058 break; 00059 case 2: 00060 istrstream(p)>>innerBe[0]>>innerBe[1]>>innerBe[2]; 00061 break; 00062 case 3: 00063 istrstream(p)>>oilLayer[0]>>oilLayer[1]>>oilLayer[2]; 00064 break; 00065 case 4: 00066 istrstream(p)>>outerBe[0]>>outerBe[1]>>outerBe[2]; 00067 break; 00068 case 5: 00069 istrstream(p)>>innerBeSide[0]>>innerBeSide[1]>>innerBeSide[2]>>innerBeSide[3]>>innerBeSide[4]; 00070 break; 00071 case 6: 00072 istrstream(p)>>innerAl[0]>>innerAl[1]>>innerAl[2]>>innerAl[3]>>innerAl[4]; 00073 break; 00074 case 7: 00075 istrstream(p)>>AlRing[0]>>AlRing[1]>>AlRing[2]>>AlRing[3]>>AlRing[4]; 00076 break; 00077 case 8: 00078 istrstream(p)>>outerAl[0]>>outerAl[1]>>outerAl[2]>>outerAl[3]>>outerAl[4]; 00079 break; 00080 case 9: 00081 istrstream(p)>>AgLayer[0]>>AgLayer[1]>>AgLayer[2]>>AgLayer[3]>>AgLayer[4]; 00082 break; 00083 case 10: 00084 istrstream(p)>>CuLayer[0]>>CuLayer[1]>>CuLayer[2]>>CuLayer[3]>>CuLayer[4]; 00085 break; 00086 case 11: 00087 istrstream(p)>>AlCover[0]>>AlCover[1]>>AlCover[2]>>AlCover[3]>>AlCover[4]; 00088 } 00089 } 00090 }