108 {
109 double gain = 0.0, length = 1.0, noisesmear = 0.;
110 double scin, mean, errmean, sigma, errsigma;
111 double mc_sigma;
112 TTree*
t =
new TTree(
"ETofSim",
"endcap attenuation length and gain" );
113 t->Branch(
"Gain", &gain,
"Gain/D" );
114 t->Branch(
"AttenLength", &length,
"AttenLength/D" );
115 t->Branch(
"NoiseSmear", &noisesmear,
"NoiseSmear/D" );
116
117 double length2 = 1.0;
118 ifstream inf1, inf2, inf3;
119 bool is_open1 = false, is_open2 = false, is_open3 = false;
120 const char* file1 = "calib_endcap_atten.txt";
121 const char* file2 = "tEndRes.txt";
122 const char* file3 = "Endcap_mc_tEndRes.txt";
123 inf1.open( file1, ios::in );
124 inf2.open( file2, ios::in );
125 inf3.open( file3, ios::in );
126 if ( inf1.good() ) is_open1 = true;
127 else { std::cerr << "File: " << file1 << " can't be opened" << std::endl; }
128 if ( inf2.good() ) is_open2 = true;
129 else { std::cerr << "File: " << file2 << " can't be opened" << std::endl; }
130 if ( inf3.good() ) is_open3 = true;
131 else { std::cerr << "File: " << file3 << " can't be opened" << std::endl; }
132 try
133 {
134 if ( is_open1 && is_open2 && is_open3 )
135 {
136 for ( int i = 0; i < 96; i++ )
137 {
138 inf1 >> gain >> length >> length2;
139 inf2 >> scin >> mean >> errmean >> sigma >> errsigma;
140 inf3 >> mc_sigma;
141 if ( mc_sigma > sigma ) { noisesmear = 0.; }
142 else { noisesmear = sqrt( sigma * sigma - mc_sigma * mc_sigma ); }
144 }
145 }
146 } catch ( ... )
147 { return false; }
148
149 inf1.close();
150 inf2.close();
151 inf3.close();
152
153 TFile
f(
"EndTofSim.root",
"RECREATE" );
158
159 return true;
160}