int main() { std::string runName = "BTF_92_20140430-020137_beam"; TFile* file = TFile::Open(Form("PosAn_%s.root", runName.c_str()) ); TTree* tree = (TTree*)file->Get("tree_passedEvents"); std::string outputdir = "CeF3_Calibration_" + runName; std::string mkdir_command = "mkdir -p " + outputdir; system( mkdir_command.c_str() ); ofstream ofs(Form("%s/constants.txt", outputdir.c_str())); std::vector<float> calibConstants; for( unsigned i=0; i<4; ++i ) { TF1* f1 = fitSingleElectronPeak( outputdir, i, tree ); float mean = f1->GetParameter(1); float sigma = f1->GetParameter(2); calibConstants.push_back(sigma/mean); std::cout << std::endl; std::cout << "Channel " << i << std::endl; std::cout << " Mean : " << mean << std::endl; std::cout << " Sigma : " << sigma << std::endl; std::cout << " Resolution : " << sigma/mean << std::endl; ofs << i << "\t" << mean << std::endl; } ofs.close(); return 0; }
int main( int argc, char* argv[] ) { DrawTools::setStyle(); std::string inputDir = "./analysisTrees"; std::string runName = "323"; std::string tag = "V01"; if( argc == 3 ) { std::string runName_str(argv[1]); runName = runName_str; std::string tag_str(argv[2]); tag = tag_str; }else if (argc==4){ std::string inputDir_str(argv[2]); inputDir =inputDir_str; } else{ std::cout<<"Usage:"<<std::endl; std::cout<<"./calibrateCef3 runNr tag [inputDir]"<<std::endl; exit(12345); } if(tag!="default") inputDir = inputDir + "_"+tag; TFile* file = TFile::Open(Form("%s/Reco_%s.root", inputDir.c_str(),runName.c_str())); std::cout<<"opening file:"<<file->GetName(); TTree* tree = (TTree*)file->Get("recoTree"); std::string outputdir = "CeF3Calibration/"; std::string mkdir_command = "mkdir -p " + outputdir; system( mkdir_command.c_str() ); std::string ofsName = outputdir +Form( "/constants_%s_%s.txt", runName.c_str(), tag.c_str() ); ofstream ofs(ofsName.c_str()); std::string ofsNameU = outputdir + Form( "/constants_uncert_%s_%s.txt", runName.c_str(), tag.c_str() ); ofstream ofsU(ofsNameU.c_str()); std::vector<float> cef3_calibration; std::vector<float> cef3_calib_uncert; for( unsigned i=0; i<4; ++i ) { TF1* f1 = fitSingleElectronPeak( outputdir, i, tree ); float mean = f1->GetParameter(1); float sigma = f1->GetParameter(2); float mean_err = f1->GetParError(1); std::cout << std::endl; std::cout << "Channel " << i << std::endl; std::cout << " Mean : " << mean << std::endl; std::cout << " Sigma : " << sigma << std::endl; std::cout << " Resolution : " << sigma/mean << std::endl; cef3_calibration.push_back(mean); cef3_calib_uncert.push_back(mean_err); } float cef3CalibrationAverage = sumVector(cef3_calibration)/cef3_calibration.size(); for(unsigned i=0; i<cef3_calibration.size(); ++i ){ cef3_calib_uncert[i] = abs(cef3CalibrationAverage-cef3_calibration[i]/4.)/(cef3_calibration[i]*cef3_calibration[i])*cef3_calib_uncert[i]; ofsU << cef3_calib_uncert[i] << std::endl; cef3_calibration[i] = cef3CalibrationAverage/cef3_calibration[i]; ofs << cef3_calibration[i] << std::endl; } ofs.close(); ofsU.close(); if(checkIntercal == true){ checkIntercalibration(cef3_calibration, cef3_calib_uncert, outputdir, runName, tag); } std::cout << "-> Saved constants in: " << ofsName << std::endl; checkTotalResolution( outputdir, tree ); return 0; }