00001 //BOOST --- BESIII Object_Oriented Simulation Tool // 00002 //Description: 00003 //Author: Caogf 00004 //Created: June, 2007 00005 //Modified: 00006 //Comment: 00007 //---------------------------------------------------------------------// 00008 //$ID: BesSCMParameter.cc 00009 00010 #include "BesSCMParameter.hh" 00011 #include <fstream> 00012 #include <strstream> 00013 #include "ReadBoostRoot.hh" 00014 using namespace std; 00015 00016 BesSCMParameter::BesSCMParameter() 00017 { 00018 } 00019 BesSCMParameter::~BesSCMParameter() 00020 { 00021 } 00022 void BesSCMParameter::ReadData() 00023 { 00024 G4String GeometryPath = getenv("BESSIMROOT"); 00025 if(!GeometryPath){ 00026 G4Exception("BOOST environment not set!"); 00027 } 00028 GeometryPath += "/dat/BesSCM.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)>>innerCryo[0]>>innerCryo[1]>>innerCryo[2]; 00058 break; 00059 case 2: 00060 istrstream(p)>>l1Adia[0]>>l1Adia[1]>>l1Adia[2]; 00061 break; 00062 case 3: 00063 istrstream(p)>>innerShield[0]>>innerShield[1]>>innerShield[2]; 00064 break; 00065 case 4: 00066 istrstream(p)>>l2Adia[0]>>l2Adia[1]>>l2Adia[2]; 00067 break; 00068 case 5: 00069 istrstream(p)>>outerShield[0]>>outerShield[1]>>outerShield[2]; 00070 break; 00071 case 6: 00072 istrstream(p)>>l3Adia[0]>>l3Adia[1]>>l3Adia[2]; 00073 break; 00074 case 7: 00075 istrstream(p)>>endShield[0]>>endShield[1]>>endShield[2]>>endShield[3]>>endShield[4]; 00076 break; 00077 case 8: 00078 istrstream(p)>>l1insu[0]>>l1insu[1]>>l1insu[2]; 00079 break; 00080 case 9: 00081 istrstream(p)>>coil[0]>>coil[1]>>coil[2]; 00082 break; 00083 case 10: 00084 istrstream(p)>>l2insu[0]>>l2insu[1]>>l2insu[2]; 00085 break; 00086 case 11: 00087 istrstream(p)>>supp[0]>>supp[1]>>supp[2]; 00088 break; 00089 case 12: 00090 istrstream(p)>>l4Adia[0]>>l4Adia[1]>>l4Adia[2]; 00091 break; 00092 case 13: 00093 istrstream(p)>>endCoil[0]>>endCoil[1]>>endCoil[2]>>endCoil[3]>>endCoil[4]; 00094 break; 00095 case 14: 00096 istrstream(p)>>outerCryo[0]>>outerCryo[1]>>outerCryo[2]; 00097 break; 00098 case 15: 00099 istrstream(p)>>endCryo[0]>>endCryo[1]>>endCryo[2]>>endCryo[3]>>endCryo[4]; 00100 break; 00101 case 16: 00102 istrstream(p)>>rein[0]>>rein[1]>>rein[2]>>rein[3]>>rein[4]; 00103 break; 00104 case 17: 00105 istrstream(p)>>pipe1[0]>>pipe1[1]>>pipe1[2]>>pipe1[3]>>pipe1[4]>>pipe1[5]; 00106 break; 00107 case 18: 00108 istrstream(p)>>pipe2[0]>>pipe2[1]>>pipe2[2]>>pipe2[3]>>pipe2[4]>>pipe2[5]; 00109 break; 00110 case 19: 00111 istrstream(p)>>pipe3[0]>>pipe3[1]>>pipe3[2]>>pipe3[3]>>pipe3[4]>>pipe3[5]; 00112 break; 00113 case 20: 00114 istrstream(p)>>hole[0]>>hole[1]>>hole[2]>>hole[3]>>hole[4]>>hole[5]>>hole[6]>>hole[7]>>hole[8]>>hole[9]>>hole[10]>>hole[11]>>hole[12]; 00115 } 00116 } 00117 } 00118