/* * Reposition the device to file, block * * Returns: false on failure * true on success */ bool generic_tape_device::reposition(DCR *dcr, uint32_t rfile, uint32_t rblock) { Dmsg4(100, "reposition from %u:%u to %u:%u\n", file, block_num, rfile, rblock); if (rfile < file) { Dmsg0(100, "Rewind\n"); if (!rewind(NULL)) { return false; } } if (rfile > file) { Dmsg1(100, "fsf %d\n", rfile-file); if (!fsf(rfile-file)) { Dmsg1(100, "fsf failed! ERR=%s\n", bstrerror()); return false; } Dmsg2(100, "wanted_file=%d at_file=%d\n", rfile, file); } if (rblock < block_num) { Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num); Dmsg0(100, "bsf 1\n"); bsf(1); Dmsg0(100, "fsf 1\n"); fsf(1); Dmsg2(100, "wanted_blk=%d at_blk=%d\n", rblock, block_num); } if (has_cap(CAP_POSITIONBLOCKS) && rblock > block_num) { /* * Ignore errors as Bareos can read to the correct block. */ Dmsg1(100, "fsr %d\n", rblock-block_num); return fsr(rblock-block_num); } else { while (rblock > block_num) { if (!dcr->read_block_from_dev(NO_BLOCK_NUMBER_CHECK)) { berrno be; dev_errno = errno; Dmsg2(30, "Failed to find requested block on %s: ERR=%s", prt_name, be.bstrerror()); return false; } Dmsg2(300, "moving forward wanted_blk=%d at_blk=%d\n", rblock, block_num); } } return true; }
// Read samples from the soundcard, filter it and then output it to the same // soundcard int main(int argc, const char **argv) { Async::CppApplication app; Async::AudioIO::setSampleRate(16000); Async::AudioIO audio_io("alsa:plughw:0", 0); Async::AudioSource *prev_src = &audio_io; // A bandpass filter centered at 1000Hz with an approximate passband // bandwidth of 400Hz and a stopband attenuation of about 40dB. const size_t N = 128; // N/fs=125Hz binwidth float coeff[N/2+1]; std::memset(coeff, 0, sizeof(coeff)); coeff[6] = 0.39811024; // 750Hz coeff[7] = 1.0; // 875Hz coeff[8] = 1.0; // 1000Hz coeff[9] = 1.0; // 1125Hz coeff[10] = 0.39811024; // 1250Hz Async::AudioFsf fsf(N, coeff); prev_src->registerSink(&fsf, true); prev_src = &fsf; prev_src->registerSink(&audio_io); prev_src = 0; if (!audio_io.open(Async::AudioIO::MODE_RDWR)) { std::cout << "*** ERROR: Could not open audio device" << std::endl; exit(1); } app.exec(); return 0; }
int main(int argc, char *argv[]) { movie *head, *left, *right; FILE *fp; head = creat (); left = head->next; right = head->pro; quicksort (left, right); print (head); insert (head); del_same (head); fpf (head, fp); fsf (head, fp); print (head); seek (head); return EXIT_SUCCESS; }
int vtape::tape_op(struct mtop *mt_com) { int result=0; int count = mt_com->mt_count; if (!online) { errno = ENOMEDIUM; return -1; } switch (mt_com->mt_op) { case MTRESET: case MTNOP: case MTSETDRVBUFFER: break; default: case MTRAS1: case MTRAS2: case MTRAS3: case MTSETDENSITY: errno = ENOTTY; result = -1; break; case MTFSF: /* Forward space over mt_count filemarks. */ do { result = fsf(); } while (--count > 0 && result == 0); break; case MTBSF: /* Backward space over mt_count filemarks. */ do { result = bsf(); } while (--count > 0 && result == 0); break; case MTFSR: /* Forward space over mt_count records (tape blocks). */ /* file number = 1 block number = 0 file number = 1 block number = 1 mt: /dev/lto2: Erreur d'entree/sortie file number = 2 block number = 0 */ /* tester si on se trouve a la fin du fichier */ result = fsr(mt_com->mt_count); break; case MTBSR: /* Backward space over mt_count records (tape blocks). */ result = bsr(mt_com->mt_count); break; case MTWEOF: /* Write mt_count filemarks. */ do { result = weof(); } while (result == 0 && --count > 0); break; case MTREW: /* Rewind. */ Dmsg0(dbglevel, "rewind vtape\n"); check_eof(); atEOF = atEOD = false; atBOT = true; current_file = 0; current_block = 0; lseek(fd, 0, SEEK_SET); result = !read_fm(VT_READ_EOF); break; case MTOFFL: /* put tape offline */ result = offline(); break; case MTRETEN: /* Re-tension tape. */ result = 0; break; case MTBSFM: /* not used by bareos */ errno = EIO; result = -1; break; case MTFSFM: /* not used by bareos */ errno = EIO; result = -1; break; case MTEOM:/* Go to the end of the recorded media (for appending files). */ while (next_FM) { lseek(fd, next_FM, SEEK_SET); if (read_fm(VT_READ_EOF)) { current_file++; } } boffset_t l; while (::read(fd, &l, sizeof(l)) > 0) { if (l) { lseek(fd, l, SEEK_CUR); } else { ASSERT(0); } Dmsg0(dbglevel, "skip 1 block\n"); } current_block = -1; atEOF = false; atEOD = true; /* file number = 3 block number = -1 */ /* Can be at EOM */ break; case MTERASE: /* not used by bareos */ atEOD = true; atEOF = false; atEOT = false; current_file = 0; current_block = -1; lseek(fd, 0, SEEK_SET); read_fm(VT_READ_EOF); truncate_file(); break; case MTSETBLK: break; case MTSEEK: break; case MTTELL: break; case MTFSS: break; case MTBSS: break; case MTWSM: break; case MTLOCK: break; case MTUNLOCK: break; case MTLOAD: break; case MTUNLOAD: break; case MTCOMPRESSION: break; case MTSETPART: break; case MTMKPART: break; } return result == 0 ? 0 : -1; }
void combine() { gROOT->SetBatch(1); SetPlotStyle(); std::string tag = "CSVM"; std::string tagName = "CSVv2M"; // std::string tag = "CMVAT"; // std::string tagName = "cMVAv2T"; // const int nPT = 15; /* const int nPT = 14; std::string pt[nPT] = { "pt20t30", "pt30t40", "pt40t50", "pt50t60", "pt60t70", "pt70t80", "pt80t100", "pt100t120", "pt120t160", "pt160t210", "pt210t260", "pt260t320", "pt320t400", "pt400t500" // "pt500t670" };*/ /* const int nPT = 7; std::string pt[nPT] = { "pt30t50", "pt50t70", "pt70t100", "pt100t140", "pt140t200", "pt200t300", "pt300t670" };*/ /* const int nPT = 5; std::string pt[nPT] = { "pt200t220", "pt220t250", "pt250t300", "pt300t400", "pt400t650" };*/ const int nPT = 5; std::string pt[nPT] = { "pt30t80", "pt80t140", "pt140t180", "pt180t240", "pt240t420" }; /* int ptb[nPT+1] = { 30,50,70,100,140,200,300,670 };*/ /* int ptb[nPT+1] = { 200,220,250,300,400,650 };*/ int ptb[nPT+1] = { 30,80,140,180,240,420 }; float xbins[nPT]; for(int j=0;j<=nPT;j++) { xbins[j] = ptb[j]/1000.; } TH1F *h_SF = new TH1F("h_SF","h_SF",nPT,xbins); TH1F *h_SF_TOTAL_UP = new TH1F("h_SF_TOTAL_UP","h_SF_TOTAL_UP",nPT,xbins); TH1F *h_SF_TOTAL_DOWN = new TH1F("h_SF_TOTAL_DOWN","h_SF_TOTAL_DOWN",nPT,xbins); TH1F *h_frb = new TH1F("h_frb","h_frb",nPT,xbins); TH1F *h_frb_TOTAL_UP = new TH1F("h_frb_TOTAL_UP","h_frb_TOTAL_UP",nPT,xbins); TH1F *h_frb_TOTAL_DOWN = new TH1F("h_frb_TOTAL_DOWN","h_frb_TOTAL_DOWN",nPT,xbins); TH1F *h_frc = new TH1F("h_frc","h_frc",nPT,xbins); TH1F *h_frc_TOTAL_UP = new TH1F("h_frc_TOTAL_UP","h_frc_TOTAL_UP",nPT,xbins); TH1F *h_frc_TOTAL_DOWN = new TH1F("h_frc_TOTAL_DOWN","h_frc_TOTAL_DOWN",nPT,xbins); TH1F *h_frl = new TH1F("h_frl","h_frl",nPT,xbins); TH1F *h_frl_TOTAL_UP = new TH1F("h_frl_TOTAL_UP","h_frl_TOTAL_UP",nPT,xbins); TH1F *h_frl_TOTAL_DOWN = new TH1F("h_frl_TOTAL_DOWN","h_frl_TOTAL_DOWN",nPT,xbins); TH1F *h_frb_tag = new TH1F("h_frb_tag","h_frb_tag",nPT,xbins); TH1F *h_frb_tag_TOTAL_UP = new TH1F("h_frb_tag_TOTAL_UP","h_frb_tag_TOTAL_UP",nPT,xbins); TH1F *h_frb_tag_TOTAL_DOWN = new TH1F("h_frb_tag_TOTAL_DOWN","h_frb_tag_TOTAL_DOWN",nPT,xbins); TH1F *h_frc_tag = new TH1F("h_frc_tag","h_frc_tag",nPT,xbins); TH1F *h_frc_tag_TOTAL_UP = new TH1F("h_frc_tag_TOTAL_UP","h_frc_tag_TOTAL_UP",nPT,xbins); TH1F *h_frc_tag_TOTAL_DOWN = new TH1F("h_frc_tag_TOTAL_DOWN","h_frc_tag_TOTAL_DOWN",nPT,xbins); TH1F *h_frl_tag = new TH1F("h_frl_tag","h_frl_tag",nPT,xbins); TH1F *h_frl_tag_TOTAL_UP = new TH1F("h_frl_tag_TOTAL_UP","h_frl_tag_TOTAL_UP",nPT,xbins); TH1F *h_frl_tag_TOTAL_DOWN = new TH1F("h_frl_tag_TOTAL_DOWN","h_frl_tag_TOTAL_DOWN",nPT,xbins); std::string head = "CSV;OperatingPoint,measurementType,sysType,jetFlavor,etaMin,etaMax,ptMin,ptMax,discrMin,discrMax,formula"; std::string fname = "results/CSV_13TEV_"+SFver+"_"+tagName+"_LT.csv"; std::ofstream sfComb(fname.c_str()); sfComb << head << std::endl; std::vector<std::vector<float> > Comb_sigma_syst; std::vector<std::vector<std::string> > Comb_sigma_syst_name; std::vector<float> Comb_sf; std::vector<int> Comb_op; std::vector<std::string> Comb_type; std::vector<int> Comb_flav; std::vector<float> Comb_etaMin; std::vector<float> Comb_etaMax; std::vector<float> Comb_discMin; std::vector<float> Comb_discMax; std::vector<int> Comb_ptMin; std::vector<int> Comb_ptMax; for(int ipt=0;ipt<nPT;ipt++) { if( tag == "CSVL" || tag == "CMVAL" ) Comb_op.push_back(0); else if( tag == "CSVM" || tag == "CMVAM" ) Comb_op.push_back(1); else if( tag == "CSVT" || tag == "CMVAT" ) Comb_op.push_back(2); Comb_type.push_back("lt"); Comb_flav.push_back(0); Comb_etaMin.push_back(0.0); Comb_etaMax.push_back(2.4); Comb_discMin.push_back(0.0); Comb_discMax.push_back(1.0); std::vector<int> run; std::vector<float> sf; std::vector<float> frb; std::vector<float> frbTag; std::vector<float> frc; std::vector<float> frcTag; std::vector<float> frl; std::vector<float> frlTag; int idxNom = -666; for(int is=0;is<=2;is++) // FIXME !!! { std::string prefix; if( is == 0 ) prefix = "results_"+tag+"_MJBOOSTS1_SUB/"; else if( is == 1 ) prefix = "results_"+tag+"_MJBOOSTS2_SUB/"; // if( is == 0 ) prefix = "results/"; // if( is == 0 ) prefix = "results_"+tag+"_MJ/"; // else if( is == 1 ) prefix = "results_"+tag+"_MJAWAY/"; // else if( is == 2 ) prefix = "results_"+tag+"_MJ1/"; // else if( is == 2 ) prefix = "results_"+tag+"_MJIAWAY/"; else continue; // read result files std::string fname = prefix+pt[ipt]+"_"+tag+".csv"; std::ifstream f(fname.c_str()); if( !f.is_open() ) continue; std::cout << fname << std::endl; int iline = 0; while( !f.eof() ) { std::string line; f >> line; if( iline == 0 ) {iline++; continue;} std::stringstream ss(line); std::string item; int idx = 0; while( std::getline(ss,item,',') ) { int run_v = -1; if( idx == 3 ) run_v = atoi(item.c_str()); if( is == 0 && idx == 3 && run_v == 0 ) idxNom = iline-1; if( (iline == 1 && is == 1) || (iline == 1 && is == 2) || (iline == 1 && is == 3) || is == 0 ) { if( is == 1 ) run_v = 200; if( is == 2 ) run_v = 201; if( is == 3 ) run_v = 202; if( idx == 3 ) run.push_back(run_v); if( idx == 24 ) { sf.push_back(atof(item.c_str())); // FIXME IF FORMAT CHANGES } if( idx == 14 ) frb.push_back(atof(item.c_str())); if( idx == 15 ) frbTag.push_back(atof(item.c_str())); if( idx == 16 ) frc.push_back(atof(item.c_str())); if( idx == 17 ) frcTag.push_back(atof(item.c_str())); if( idx == 18 ) frl.push_back(atof(item.c_str())); if( idx == 19 ) frlTag.push_back(atof(item.c_str())); if( iline == 1 && is == 0 && (run_v < 100 || run_v >= 666) ) { if( idx == 0 ) Comb_ptMin.push_back(atoi(item.c_str())); if( idx == 1 ) Comb_ptMax.push_back(atoi(item.c_str())); } } idx++; } iline++; } f.close(); } // do calculations int nRES = run.size(); float sigma_syst_up = 0.; float sigma_syst_down = 0.; float sigma_total_up = 0.; float sigma_total_down = 0.; float sigma_stat = 0.; float sf_stat_sum = 0.; float istat = 0; float frb_sigma_total_up = 0.; float frb_sigma_total_down = 0.; float frc_sigma_total_up = 0.; float frc_sigma_total_down = 0.; float frl_sigma_total_up = 0.; float frl_sigma_total_down = 0.; float frb_sigma_syst_up = 0.; float frb_sigma_syst_down = 0.; float frc_sigma_syst_up = 0.; float frc_sigma_syst_down = 0.; float frl_sigma_syst_up = 0.; float frl_sigma_syst_down = 0.; float frb_tag_sigma_total_up = 0.; float frb_tag_sigma_total_down = 0.; float frc_tag_sigma_total_up = 0.; float frc_tag_sigma_total_down = 0.; float frl_tag_sigma_total_up = 0.; float frl_tag_sigma_total_down = 0.; float frb_tag_sigma_syst_up = 0.; float frb_tag_sigma_syst_down = 0.; float frc_tag_sigma_syst_up = 0.; float frc_tag_sigma_syst_down = 0.; float frl_tag_sigma_syst_up = 0.; float frl_tag_sigma_syst_down = 0.; float frb_stat_sum = 0.; float sigma_frb_stat = 0.; float frc_stat_sum = 0.; float sigma_frc_stat = 0.; float frl_stat_sum = 0.; float sigma_frl_stat = 0.; float frbTag_stat_sum = 0.; float sigma_frbTag_stat = 0.; float frcTag_stat_sum = 0.; float sigma_frcTag_stat = 0.; float frlTag_stat_sum = 0.; float sigma_frlTag_stat = 0.; std::vector<float> sigma_syst_sep; std::vector<std::string> sigma_syst_name; float sigma_syst_add = 0.; float frb_sigma_syst_add = 0.; float frc_sigma_syst_add = 0.; float frl_sigma_syst_add = 0.; float frb_tag_sigma_syst_add = 0.; float frc_tag_sigma_syst_add = 0.; float frl_tag_sigma_syst_add = 0.; std::vector<float> frb_sigma_syst_sep; std::vector<float> frc_sigma_syst_sep; std::vector<float> frl_sigma_syst_sep; std::vector<float> frb_tag_sigma_syst_sep; std::vector<float> frc_tag_sigma_syst_sep; std::vector<float> frl_tag_sigma_syst_sep; std::vector<std::string> frb_sigma_syst_name; std::vector<std::string> frc_sigma_syst_name; std::vector<std::string> frl_sigma_syst_name; std::vector<std::string> frb_tag_sigma_syst_name; std::vector<std::string> frc_tag_sigma_syst_name; std::vector<std::string> frl_tag_sigma_syst_name; for(int i=0;i<nRES;i++) { if( i == idxNom ) { sigma_syst_sep.push_back(sf[idxNom]); sigma_syst_name.push_back(getSysName(run[i])); continue; } if( run[i] < 666 ) { float delta = sf[idxNom]-sf[i]; bool isUp = (delta < 0); float err = delta*delta; if( run[i] < 100 ) { if( isUp ) sigma_syst_up += err; else sigma_syst_down += err; } if( run[i] >= 100 && run[i] <= 202 ) { sigma_syst_up += pow(delta,2); sigma_syst_down += pow(delta,2); } if( run[i] < 100 ) { if( isUp ) sigma_syst_sep.push_back(sf[idxNom]+sqrt(err)); else sigma_syst_sep.push_back(sf[idxNom]-sqrt(err)); sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { sigma_syst_add += pow(delta,2); } // frb float delta_frb = frb[idxNom]-frb[i]; bool isUp_frb = (delta_frb < 0); float err_frb = delta_frb*delta_frb; if( isUp_frb ) frb_sigma_syst_up += err_frb; else frb_sigma_syst_down += err_frb; if( run[i] < 100 ) { if( isUp_frb ) frb_sigma_syst_sep.push_back(frb[idxNom]+sqrt(err_frb)); else frb_sigma_syst_sep.push_back(frb[idxNom]-sqrt(err_frb)); frb_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frb_sigma_syst_add += pow(delta_frb,2); } // frbTag float delta_frb_tag = frbTag[idxNom]-frbTag[i]; bool isUp_frb_tag = (delta_frb_tag < 0); float err_frb_tag = delta_frb_tag*delta_frb_tag; if( isUp_frb_tag ) frb_tag_sigma_syst_up += err_frb_tag; else frb_tag_sigma_syst_down += err_frb_tag; if( run[i] < 100 ) { if( isUp_frb_tag ) frb_tag_sigma_syst_sep.push_back(frbTag[idxNom]+sqrt(err_frb_tag)); else frb_tag_sigma_syst_sep.push_back(frbTag[idxNom]-sqrt(err_frb_tag)); frb_tag_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frb_tag_sigma_syst_add += pow(delta_frb_tag,2); } // frc float delta_frc = frc[idxNom]-frc[i]; bool isUp_frc = (delta_frc < 0); float err_frc = delta_frc*delta_frc; if( isUp_frc ) frc_sigma_syst_up += err_frc; else frc_sigma_syst_down += err_frc; if( run[i] < 100 ) { if( isUp_frc ) frc_sigma_syst_sep.push_back(frc[idxNom]+sqrt(err_frc)); else frc_sigma_syst_sep.push_back(frc[idxNom]-sqrt(err_frc)); frc_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frc_sigma_syst_add += pow(delta_frc,2); } // frcTag float delta_frc_tag = frcTag[idxNom]-frcTag[i]; bool isUp_frc_tag = (delta_frc_tag < 0); float err_frc_tag = delta_frc_tag*delta_frc_tag; if( isUp_frc_tag ) frc_tag_sigma_syst_up += err_frc_tag; else frc_tag_sigma_syst_down += err_frc_tag; if( run[i] < 100 ) { if( isUp_frc_tag ) frc_tag_sigma_syst_sep.push_back(frcTag[idxNom]+sqrt(err_frc_tag)); else frc_tag_sigma_syst_sep.push_back(frcTag[idxNom]-sqrt(err_frc_tag)); frc_tag_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frc_tag_sigma_syst_add += pow(delta_frc_tag,2); } // frl float delta_frl = frl[idxNom]-frl[i]; bool isUp_frl = (delta_frl < 0); float err_frl = delta_frl*delta_frl; if( isUp_frl ) frl_sigma_syst_up += err_frl; else frl_sigma_syst_down += err_frl; if( run[i] < 100 ) { if( isUp_frl ) frl_sigma_syst_sep.push_back(frl[idxNom]+sqrt(err_frl)); else frl_sigma_syst_sep.push_back(frl[idxNom]-sqrt(err_frl)); frl_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frl_sigma_syst_add += pow(delta_frl,2); } // frlTag float delta_frl_tag = frlTag[idxNom]-frlTag[i]; bool isUp_frl_tag = (delta_frl_tag < 0); float err_frl_tag = delta_frl_tag*delta_frl_tag; if( isUp_frl_tag ) frl_tag_sigma_syst_up += err_frl_tag; else frl_tag_sigma_syst_down += err_frl_tag; if( run[i] < 100 ) { if( isUp_frl_tag ) frl_tag_sigma_syst_sep.push_back(frlTag[idxNom]+sqrt(err_frl_tag)); else frl_tag_sigma_syst_sep.push_back(frlTag[idxNom]-sqrt(err_frl_tag)); frl_tag_sigma_syst_name.push_back(getSysName(run[i])); } if( run[i] >= 100 && run[i] <= 202 ) { frl_tag_sigma_syst_add += pow(delta_frl_tag,2); } } else { sf_stat_sum += sf[i]; frb_stat_sum += frb[i]; frc_stat_sum += frc[i]; frl_stat_sum += frl[i]; frbTag_stat_sum += frbTag[i]; frcTag_stat_sum += frcTag[i]; frlTag_stat_sum += frlTag[i]; istat++; } } sigma_syst_add = sqrt(sigma_syst_add); frb_sigma_syst_add = sqrt(frb_sigma_syst_add); frc_sigma_syst_add = sqrt(frc_sigma_syst_add); frl_sigma_syst_add = sqrt(frl_sigma_syst_add); frb_tag_sigma_syst_add = sqrt(frb_tag_sigma_syst_add); frc_tag_sigma_syst_add = sqrt(frc_tag_sigma_syst_add); frl_tag_sigma_syst_add = sqrt(frl_tag_sigma_syst_add); Comb_sf.push_back(sf[idxNom]); sf_stat_sum /= istat; frb_stat_sum /= istat; frc_stat_sum /= istat; frl_stat_sum /= istat; frbTag_stat_sum /= istat; frcTag_stat_sum /= istat; frlTag_stat_sum /= istat; float sfcbsys = 0.; // add Cb systematics if( inclCB ) { float cb = getCb(tag,"bjet",ipt+1); // float cb = getCb(tag,"bjet",ipt+1+1); //FIXME if include 20-30 bin float cbsys = (1-cb)*0.5/cb; sfcbsys = pow(cbsys*sf[idxNom],2); sigma_syst_up += sfcbsys; sigma_syst_down += sfcbsys; } // add add // sigma_syst_up += sigma_syst_add*sigma_syst_add; // sigma_syst_down += sigma_syst_add*sigma_syst_add; for(int i=0;i<istat;i++) { sigma_stat += pow(sf_stat_sum-sf[i],2)/istat; sigma_frb_stat += pow(frb_stat_sum-frb[i],2)/istat; sigma_frc_stat += pow(frc_stat_sum-frc[i],2)/istat; sigma_frl_stat += pow(frl_stat_sum-frl[i],2)/istat; sigma_frbTag_stat += pow(frbTag_stat_sum-frbTag[i],2)/istat; sigma_frcTag_stat += pow(frcTag_stat_sum-frcTag[i],2)/istat; sigma_frlTag_stat += pow(frlTag_stat_sum-frlTag[i],2)/istat; } sigma_stat = sqrt(sigma_stat); sigma_frb_stat = sqrt(sigma_frb_stat); sigma_frc_stat = sqrt(sigma_frc_stat); sigma_frl_stat = sqrt(sigma_frl_stat); sigma_frbTag_stat = sqrt(sigma_frbTag_stat); sigma_frcTag_stat = sqrt(sigma_frcTag_stat); sigma_frlTag_stat = sqrt(sigma_frlTag_stat); sigma_syst_up = sqrt(sigma_syst_up); sigma_syst_down = sqrt(sigma_syst_down); frb_sigma_syst_up = sqrt(frb_sigma_syst_up); frb_sigma_syst_down = sqrt(frb_sigma_syst_down); frc_sigma_syst_up = sqrt(frc_sigma_syst_up); frc_sigma_syst_down = sqrt(frc_sigma_syst_down); frl_sigma_syst_up = sqrt(frl_sigma_syst_up); frl_sigma_syst_down = sqrt(frl_sigma_syst_down); frb_tag_sigma_syst_up = sqrt(frb_tag_sigma_syst_up); frb_tag_sigma_syst_down = sqrt(frb_tag_sigma_syst_down); frc_tag_sigma_syst_up = sqrt(frc_tag_sigma_syst_up); frc_tag_sigma_syst_down = sqrt(frc_tag_sigma_syst_down); frl_tag_sigma_syst_up = sqrt(frl_tag_sigma_syst_up); frl_tag_sigma_syst_down = sqrt(frl_tag_sigma_syst_down); sigma_total_up = sqrt(sigma_stat*sigma_stat+sigma_syst_up*sigma_syst_up); sigma_total_down = sqrt(sigma_stat*sigma_stat+sigma_syst_down*sigma_syst_down); frb_sigma_total_up = sqrt(sigma_frb_stat*sigma_frb_stat+frb_sigma_syst_up*frb_sigma_syst_up); frb_sigma_total_down = sqrt(sigma_frb_stat*sigma_frb_stat+frb_sigma_syst_down*frb_sigma_syst_down); frc_sigma_total_up = sqrt(sigma_frc_stat*sigma_frc_stat+frc_sigma_syst_up*frc_sigma_syst_up); frc_sigma_total_down = sqrt(sigma_frc_stat*sigma_frc_stat+frc_sigma_syst_down*frc_sigma_syst_down); frl_sigma_total_up = sqrt(sigma_frl_stat*sigma_frl_stat+frl_sigma_syst_up*frl_sigma_syst_up); frl_sigma_total_down = sqrt(sigma_frl_stat*sigma_frl_stat+frl_sigma_syst_down*frl_sigma_syst_down); frb_tag_sigma_total_up = sqrt(sigma_frbTag_stat*sigma_frbTag_stat+frb_tag_sigma_syst_up*frb_tag_sigma_syst_up); frb_tag_sigma_total_down = sqrt(sigma_frbTag_stat*sigma_frbTag_stat+frb_tag_sigma_syst_down*frb_tag_sigma_syst_down); frc_tag_sigma_total_up = sqrt(sigma_frcTag_stat*sigma_frcTag_stat+frc_tag_sigma_syst_up*frc_tag_sigma_syst_up); frc_tag_sigma_total_down = sqrt(sigma_frcTag_stat*sigma_frcTag_stat+frc_tag_sigma_syst_down*frc_tag_sigma_syst_down); frl_tag_sigma_total_up = sqrt(sigma_frlTag_stat*sigma_frlTag_stat+frl_tag_sigma_syst_up*frl_tag_sigma_syst_up); frl_tag_sigma_total_down = sqrt(sigma_frlTag_stat*sigma_frlTag_stat+frl_tag_sigma_syst_down*frl_tag_sigma_syst_down); float SF = sf[idxNom]; float SF_STAT = SF+sigma_stat; float SF_SYST_UP = SF+sigma_syst_up; float SF_SYST_DOWN = SF-sigma_syst_down; float SF_TOTAL_UP = SF+sigma_total_up; float SF_TOTAL_DOWN = SF-sigma_total_down; h_SF->SetBinContent(ipt+1,SF); h_SF->SetBinError(ipt+1,sigma_stat); h_SF_TOTAL_UP->SetBinContent(ipt+1,SF_TOTAL_UP); h_SF_TOTAL_DOWN->SetBinContent(ipt+1,SF_TOTAL_DOWN); float FRB = frb[idxNom]; float FRB_STAT = FRB+sigma_frb_stat; float FRB_SYST_UP = FRB+frb_sigma_syst_up; float FRB_SYST_DOWN = FRB-frb_sigma_syst_down; float FRB_TOTAL_UP = FRB+frb_sigma_total_up; float FRB_TOTAL_DOWN = FRB-frb_sigma_total_down; h_frb->SetBinContent(ipt+1,FRB); h_frb->SetBinError(ipt+1,sigma_frb_stat); h_frb_TOTAL_UP->SetBinContent(ipt+1,FRB_TOTAL_UP); h_frb_TOTAL_DOWN->SetBinContent(ipt+1,FRB_TOTAL_DOWN); float FRC = frc[idxNom]; float FRC_STAT = FRC+sigma_frc_stat; float FRC_SYST_UP = FRC+frc_sigma_syst_up; float FRC_SYST_DOWN = FRC-frc_sigma_syst_down; float FRC_TOTAL_UP = FRC+frc_sigma_total_up; float FRC_TOTAL_DOWN = FRC-frc_sigma_total_down; h_frc->SetBinContent(ipt+1,FRC); h_frc->SetBinError(ipt+1,sigma_frc_stat); h_frc_TOTAL_UP->SetBinContent(ipt+1,FRC_TOTAL_UP); h_frc_TOTAL_DOWN->SetBinContent(ipt+1,FRC_TOTAL_DOWN); float FRL = frl[idxNom]; float FRL_STAT = FRL+sigma_frl_stat; float FRL_SYST_UP = FRL+frl_sigma_syst_up; float FRL_SYST_DOWN = FRL-frl_sigma_syst_down; float FRL_TOTAL_UP = FRL+frl_sigma_total_up; float FRL_TOTAL_DOWN = FRL-frl_sigma_total_down; h_frl->SetBinContent(ipt+1,FRL); h_frl->SetBinError(ipt+1,sigma_frl_stat); h_frl_TOTAL_UP->SetBinContent(ipt+1,FRL_TOTAL_UP); h_frl_TOTAL_DOWN->SetBinContent(ipt+1,FRL_TOTAL_DOWN); float FRB_TAG = frbTag[idxNom]; float FRB_TAG_STAT = FRB_TAG+sigma_frbTag_stat; float FRB_TAG_SYST_UP = FRB_TAG+frb_tag_sigma_syst_up; float FRB_TAG_SYST_DOWN = FRB_TAG-frb_tag_sigma_syst_down; float FRB_TAG_TOTAL_UP = FRB_TAG+frb_tag_sigma_total_up; float FRB_TAG_TOTAL_DOWN = FRB_TAG-frb_tag_sigma_total_down; h_frb_tag->SetBinContent(ipt+1,FRB_TAG); h_frb_tag->SetBinError(ipt+1,sigma_frbTag_stat); h_frb_tag_TOTAL_UP->SetBinContent(ipt+1,FRB_TAG_TOTAL_UP); h_frb_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRB_TAG_TOTAL_DOWN); float FRC_TAG = frcTag[idxNom]; float FRC_TAG_STAT = FRC_TAG+sigma_frcTag_stat; float FRC_TAG_SYST_UP = FRC_TAG+frc_tag_sigma_syst_up; float FRC_TAG_SYST_DOWN = FRC_TAG-frc_tag_sigma_syst_down; float FRC_TAG_TOTAL_UP = FRC_TAG+frc_tag_sigma_total_up; float FRC_TAG_TOTAL_DOWN = FRC_TAG-frc_tag_sigma_total_down; h_frc_tag->SetBinContent(ipt+1,FRC_TAG); h_frc_tag->SetBinError(ipt+1,sigma_frcTag_stat); h_frc_tag_TOTAL_UP->SetBinContent(ipt+1,FRC_TAG_TOTAL_UP); h_frc_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRC_TAG_TOTAL_DOWN); float FRL_TAG = frlTag[idxNom]; float FRL_TAG_STAT = FRL_TAG+sigma_frlTag_stat; float FRL_TAG_SYST_UP = FRL_TAG+frl_tag_sigma_syst_up; float FRL_TAG_SYST_DOWN = FRL_TAG-frl_tag_sigma_syst_down; float FRL_TAG_TOTAL_UP = FRL_TAG+frl_tag_sigma_total_up; float FRL_TAG_TOTAL_DOWN = FRL_TAG-frl_tag_sigma_total_down; h_frl_tag->SetBinContent(ipt+1,FRL_TAG); h_frl_tag->SetBinError(ipt+1,sigma_frlTag_stat); h_frl_tag_TOTAL_UP->SetBinContent(ipt+1,FRL_TAG_TOTAL_UP); h_frl_tag_TOTAL_DOWN->SetBinContent(ipt+1,FRL_TAG_TOTAL_DOWN); // additional uncertainties // stat sigma_syst_name.push_back("up_statistic"); sigma_syst_sep.push_back(SF+sigma_stat); sigma_syst_name.push_back("down_statistic"); sigma_syst_sep.push_back(SF-sigma_stat); // cb sigma_syst_name.push_back("up_cb"); sigma_syst_sep.push_back(SF+sqrt(sfcbsys)); sigma_syst_name.push_back("down_cb"); sigma_syst_sep.push_back(SF-sqrt(sfcbsys)); // add sigma_syst_name.push_back("up_add"); sigma_syst_sep.push_back(SF+sigma_syst_add); sigma_syst_name.push_back("down_add"); sigma_syst_sep.push_back(SF-sigma_syst_add); // total sigma_syst_name.push_back("up"); sigma_syst_sep.push_back(SF_TOTAL_UP); sigma_syst_name.push_back("down"); sigma_syst_sep.push_back(SF_TOTAL_DOWN); Comb_sigma_syst.push_back(sigma_syst_sep); Comb_sigma_syst_name.push_back(sigma_syst_name); } // draw SF TCanvas *c1 = new TCanvas("c1","c1",0,0,600,500); c1->SetGrid(1); std::string csv = "#bf{"+tagName+"}"; const int np = 2*(nPT+2)+1; double xp_sysTot_SF[np]; double yp_sysTot_SF[np]; for(int k=0;k<nPT+2;k++) { float addw = h_SF->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_SF->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_SF[k] = addw + h_SF->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_SF[k] = h_SF_TOTAL_UP->GetBinContent(ib); yp_sysTot_SF[nPT+2+k] = h_SF_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_SF[nPT+2+k] = xp_sysTot_SF[nPT+2-k-1]; } xp_sysTot_SF[np-1] = xp_sysTot_SF[0]; yp_sysTot_SF[np-1] = yp_sysTot_SF[0]; TPolyLine *sysTot_SF = new TPolyLine(np,xp_sysTot_SF,yp_sysTot_SF); sysTot_SF->SetFillColor(kYellow); if( !doSFc ) h_SF->GetYaxis()->SetTitle("SF_{b}"); else h_SF->GetYaxis()->SetTitle("SF_{c}"); h_SF->GetXaxis()->SetTitle("p_{T} [TeV]"); h_SF->SetMarkerSize(0.8); h_SF->Draw("e1p"); h_SF->GetXaxis()->SetMoreLogLabels(); h_SF->GetXaxis()->SetNoExponent(); h_SF->GetYaxis()->SetRangeUser(0.40,1.30); sysTot_SF->Draw("fSAME"); h_SF->Draw("e1p same"); TLegend *leg; leg = new TLegend(0.35,0.45,0.70,0.20); leg->SetFillColor(253); leg->SetBorderSize(0); TLatex *legl = new TLatex(); legl->SetNDC(); legl->SetTextAlign(22); legl->SetTextFont(63); legl->SetTextSizePixels(30); legl->DrawLatex(0.55,0.82,csv.c_str()); leg->AddEntry(h_SF,"Scale factor","p"); leg->AddEntry(h_SF,"stat","l"); leg->AddEntry(sysTot_SF,"stat #oplus syst","f"); c1->RedrawAxis("g"); leg->Draw(); // c1->SetLogx(1); // TLatex *lab = CMSLABEL(); // lab->Draw("same"); TLatex *tex = new TLatex(0.1969,0.906825,"CMS"); tex->SetNDC(); tex->SetTextAlign(13); tex->SetTextFont(61); tex->SetTextSize(0.07475); tex->SetLineWidth(2); tex->Draw(); TLatex *tex2 = new TLatex(0.1969,0.817125,"Preliminary"); tex2->SetNDC(); tex2->SetTextAlign(13); tex2->SetTextFont(52); tex2->SetTextSize(0.05681); tex2->SetLineWidth(2); tex2->Draw(); TLatex *text1 = new TLatex(0.98,0.95125,"#sqrt{s} = 13 TeV, 25 ns"); text1->SetNDC(); text1->SetTextAlign(31); text1->SetTextFont(42); text1->SetTextSize(0.04875); text1->SetLineWidth(2); text1->Draw(); std::string picname = "pics/SF_"+tag+".eps"; c1->Print(picname.c_str()); c1->Clear(); delete sysTot_SF; delete c1; delete leg; delete legl; // draw fractions noTag TCanvas *c2 = new TCanvas("c2","c2",0,0,600,500); c2->SetGrid(1); // frb double xp_sysTot_FRB[np]; double yp_sysTot_FRB[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frb->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frb->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRB[k] = addw + h_frb->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRB[k] = h_frb_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRB[nPT+2+k] = h_frb_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRB[nPT+2+k] = xp_sysTot_FRB[nPT+2-k-1]; } xp_sysTot_FRB[np-1] = xp_sysTot_FRB[0]; yp_sysTot_FRB[np-1] = yp_sysTot_FRB[0]; TPolyLine *sysTot_FRB = new TPolyLine(np,xp_sysTot_FRB,yp_sysTot_FRB); sysTot_FRB->SetFillColor(kRed); sysTot_FRB->SetLineColor(kRed); // sysTot_FRB->SetFillStyle(0); // frc double xp_sysTot_FRC[np]; double yp_sysTot_FRC[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frc->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frc->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRC[k] = addw + h_frc->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRC[k] = h_frc_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRC[nPT+2+k] = h_frc_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRC[nPT+2+k] = xp_sysTot_FRC[nPT+2-k-1]; } xp_sysTot_FRC[np-1] = xp_sysTot_FRC[0]; yp_sysTot_FRC[np-1] = yp_sysTot_FRC[0]; TPolyLine *sysTot_FRC = new TPolyLine(np,xp_sysTot_FRC,yp_sysTot_FRC); sysTot_FRC->SetFillColor(kGreen); sysTot_FRC->SetLineColor(kGreen); // sysTot_FRC->SetFillStyle(0); // frl double xp_sysTot_FRL[np]; double yp_sysTot_FRL[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frl->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frl->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRL[k] = addw + h_frl->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRL[k] = h_frl_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRL[nPT+2+k] = h_frl_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRL[nPT+2+k] = xp_sysTot_FRL[nPT+2-k-1]; } xp_sysTot_FRL[np-1] = xp_sysTot_FRL[0]; yp_sysTot_FRL[np-1] = yp_sysTot_FRL[0]; TPolyLine *sysTot_FRL = new TPolyLine(np,xp_sysTot_FRL,yp_sysTot_FRL); sysTot_FRL->SetFillColor(kBlue); sysTot_FRL->SetLineColor(kBlue); h_frb->GetYaxis()->SetTitle("Fit fraction"); h_frb->GetXaxis()->SetTitle("p_{T} [TeV]"); h_frb->SetMarkerSize(1.0); h_frc->SetMarkerSize(1.0); h_frl->SetMarkerSize(1.0); h_frb->SetMarkerStyle(20); h_frc->SetMarkerStyle(22); h_frl->SetMarkerStyle(24); h_frb->SetMarkerColor(0); h_frc->SetMarkerColor(0); h_frl->SetMarkerColor(0); h_frb->SetLineColor(0); h_frc->SetLineColor(0); h_frl->SetLineColor(0); h_frb->Draw("e1p"); h_frc->Draw("e1p same"); h_frl->Draw("e1p same"); h_frb->GetXaxis()->SetMoreLogLabels(); h_frb->GetXaxis()->SetNoExponent(); h_frb->GetYaxis()->SetRangeUser(0.00,1.50); sysTot_FRB->Draw("fSAME"); sysTot_FRC->Draw("fSAME"); sysTot_FRL->Draw("fSAME"); h_frb->Draw("e1p same"); h_frc->Draw("e1p same"); h_frl->Draw("e1p same"); TLegend *leg2; leg2 = new TLegend(0.70,0.85,0.95,0.70); leg2->SetFillColor(253); leg2->SetBorderSize(0); TLatex *legl2 = new TLatex(); legl2->SetNDC(); legl2->SetTextAlign(22); legl2->SetTextFont(63); legl2->SetTextSizePixels(30); // legl2->DrawLatex(0.55,0.82,csv.c_str()); legl2->DrawLatex(0.55,0.82,"Pre-tag"); TH1D *h_frb_clone = (TH1D*)h_frb->Clone("h_frb_clone"); TH1D *h_frc_clone = (TH1D*)h_frc->Clone("h_frc_clone"); TH1D *h_frl_clone = (TH1D*)h_frl->Clone("h_frl_clone"); h_frb_clone->SetMarkerColor(2); h_frc_clone->SetMarkerColor(3); h_frl_clone->SetMarkerColor(4); h_frb_clone->SetLineColor(2); h_frc_clone->SetLineColor(3); h_frl_clone->SetLineColor(4); leg2->AddEntry(h_frb_clone,"b-jets","lp"); leg2->AddEntry(h_frc_clone,"c-jets","lp"); leg2->AddEntry(h_frl_clone,"udsg-jets","lp"); c2->RedrawAxis("g"); leg2->Draw(); c2->SetLogx(1); tex->Draw(); tex2->Draw(); text1->Draw(); picname = "pics/Fr_noTag.eps"; c2->Print(picname.c_str()); c2->Clear(); // draw fractions Tag TCanvas *c3 = new TCanvas("c3","c3",0,0,600,500); c3->SetGrid(1); // frb double xp_sysTot_FRB_TAG[np]; double yp_sysTot_FRB_TAG[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frb_tag->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frb_tag->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRB_TAG[k] = addw + h_frb_tag->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRB_TAG[k] = h_frb_tag_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRB_TAG[nPT+2+k] = h_frb_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRB_TAG[nPT+2+k] = xp_sysTot_FRB_TAG[nPT+2-k-1]; } xp_sysTot_FRB_TAG[np-1] = xp_sysTot_FRB_TAG[0]; yp_sysTot_FRB_TAG[np-1] = yp_sysTot_FRB_TAG[0]; TPolyLine *sysTot_FRB_TAG = new TPolyLine(np,xp_sysTot_FRB_TAG,yp_sysTot_FRB_TAG); sysTot_FRB_TAG->SetFillColor(kRed); sysTot_FRB_TAG->SetLineColor(kRed); // frc double xp_sysTot_FRC_TAG[np]; double yp_sysTot_FRC_TAG[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frc_tag->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frc_tag->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRC_TAG[k] = addw + h_frc_tag->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRC_TAG[k] = h_frc_tag_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRC_TAG[nPT+2+k] = h_frc_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRC_TAG[nPT+2+k] = xp_sysTot_FRC_TAG[nPT+2-k-1]; } xp_sysTot_FRC_TAG[np-1] = xp_sysTot_FRC_TAG[0]; yp_sysTot_FRC_TAG[np-1] = yp_sysTot_FRC_TAG[0]; TPolyLine *sysTot_FRC_TAG = new TPolyLine(np,xp_sysTot_FRC_TAG,yp_sysTot_FRC_TAG); sysTot_FRC_TAG->SetFillColor(kGreen); sysTot_FRC_TAG->SetLineColor(kGreen); // frl double xp_sysTot_FRL_TAG[np]; double yp_sysTot_FRL_TAG[np]; for(int k=0;k<nPT+2;k++) { float addw = h_frl_tag->GetBinWidth(k)/2.0; if( k == 0 ) addw = 0.0; if( k == nPT+1 ) addw = h_frl_tag->GetBinWidth(k-1); int ib = k+1; if( k > 0 ) ib--; if( k == nPT+1 ) ib--; xp_sysTot_FRL_TAG[k] = addw + h_frl_tag->GetXaxis()->GetBinLowEdge(ib); yp_sysTot_FRL_TAG[k] = h_frl_tag_TOTAL_UP->GetBinContent(ib); yp_sysTot_FRL_TAG[nPT+2+k] = h_frl_tag_TOTAL_DOWN->GetBinContent(nPT-(ib-1)); } for(int k=0;k<nPT+2;k++) { xp_sysTot_FRL_TAG[nPT+2+k] = xp_sysTot_FRL_TAG[nPT+2-k-1]; } xp_sysTot_FRL_TAG[np-1] = xp_sysTot_FRL_TAG[0]; yp_sysTot_FRL_TAG[np-1] = yp_sysTot_FRL_TAG[0]; TPolyLine *sysTot_FRL_TAG = new TPolyLine(np,xp_sysTot_FRL_TAG,yp_sysTot_FRL_TAG); sysTot_FRL_TAG->SetFillColor(kBlue); sysTot_FRL_TAG->SetLineColor(kBlue); h_frb_tag->GetYaxis()->SetTitle("Fit fraction"); h_frb_tag->GetXaxis()->SetTitle("p_{T} [TeV]"); h_frb_tag->SetMarkerSize(1.0); h_frc_tag->SetMarkerSize(1.0); h_frl_tag->SetMarkerSize(1.0); h_frb_tag->SetMarkerStyle(20); h_frc_tag->SetMarkerStyle(22); h_frl_tag->SetMarkerStyle(24); h_frb_tag->SetMarkerColor(0); h_frc_tag->SetMarkerColor(0); h_frl_tag->SetMarkerColor(0); h_frb_tag->SetLineColor(0); h_frc_tag->SetLineColor(0); h_frl_tag->SetLineColor(0); h_frb_tag->Draw("e1p"); h_frc_tag->Draw("e1p same"); h_frl_tag->Draw("e1p same"); h_frb_tag->GetXaxis()->SetMoreLogLabels(); h_frb_tag->GetXaxis()->SetNoExponent(); h_frb_tag->GetYaxis()->SetRangeUser(0.00,1.50); sysTot_FRB_TAG->Draw("fSAME"); sysTot_FRC_TAG->Draw("fSAME"); sysTot_FRL_TAG->Draw("fSAME"); h_frb_tag->Draw("e1p same"); h_frc_tag->Draw("e1p same"); h_frl_tag->Draw("e1p same"); TLegend *leg3; leg3 = new TLegend(0.70,0.85,0.95,0.70); leg3->SetFillColor(253); leg3->SetBorderSize(0); TLatex *legl3 = new TLatex(); legl3->SetNDC(); legl3->SetTextAlign(22); legl3->SetTextFont(63); legl3->SetTextSizePixels(30); legl3->DrawLatex(0.55,0.82,csv.c_str()); TH1D *h_frb_tag_clone = (TH1D*)h_frb_tag->Clone("h_frb_tag_clone"); TH1D *h_frc_tag_clone = (TH1D*)h_frc_tag->Clone("h_frc_tag_clone"); TH1D *h_frl_tag_clone = (TH1D*)h_frl_tag->Clone("h_frl_tag_clone"); h_frb_tag_clone->SetMarkerColor(2); h_frc_tag_clone->SetMarkerColor(3); h_frl_tag_clone->SetMarkerColor(4); h_frb_tag_clone->SetLineColor(2); h_frc_tag_clone->SetLineColor(3); h_frl_tag_clone->SetLineColor(4); leg3->AddEntry(h_frb_tag_clone,"b-jets","lp"); leg3->AddEntry(h_frc_tag_clone,"c-jets","lp"); leg3->AddEntry(h_frl_tag_clone,"udsg-jets","lp"); c3->RedrawAxis("g"); leg3->Draw(); c3->SetLogx(1); tex->Draw(); tex2->Draw(); text1->Draw(); picname = "pics/Fr_"+tag+".eps"; c3->Print(picname.c_str()); c3->Clear(); std::ofstream fsf("results/SFSYS.tex"); std::string header = "\n \ \\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|} \n \
/* * Position device to end of medium (end of data) * * Returns: true on succes * false on error */ bool generic_tape_device::eod(DCR *dcr) { struct mtop mt_com; bool ok = true; int32_t os_file; if (m_fd < 0) { dev_errno = EBADF; Mmsg1(errmsg, _("Bad call to eod. Device %s not open\n"), prt_name); return false; } #if defined (__digital__) && defined (__unix__) return fsf(VolCatInfo.VolCatFiles); #endif Dmsg0(100, "Enter eod\n"); if (at_eot()) { return true; } clear_eof(); /* remove EOF flag */ block_num = file = 0; file_size = 0; file_addr = 0; #ifdef MTEOM if (has_cap(CAP_FASTFSF) && !has_cap(CAP_EOM)) { Dmsg0(100,"Using FAST FSF for EOM\n"); /* * If unknown position, rewind */ if (get_os_tape_file() < 0) { if (!rewind(NULL)) { Dmsg0(100, "Rewind error\n"); return false; } } mt_com.mt_op = MTFSF; /* * ***FIXME*** fix code to handle case that INT16_MAX is not large enough. */ mt_com.mt_count = INT16_MAX; /* use big positive number */ if (mt_com.mt_count < 0) { mt_com.mt_count = INT16_MAX; /* brain damaged system */ } } if (has_cap(CAP_MTIOCGET) && (has_cap(CAP_FASTFSF) || has_cap(CAP_EOM))) { if (has_cap(CAP_EOM)) { Dmsg0(100,"Using EOM for EOM\n"); mt_com.mt_op = MTEOM; mt_com.mt_count = 1; } if (d_ioctl(m_fd, MTIOCTOP, (char *)&mt_com) < 0) { berrno be; clrerror(mt_com.mt_op); Dmsg1(50, "ioctl error: %s\n", be.bstrerror()); update_pos(dcr); Mmsg2(errmsg, _("ioctl MTEOM error on %s. ERR=%s.\n"), prt_name, be.bstrerror()); Dmsg0(100, errmsg); return false; } os_file = get_os_tape_file(); if (os_file < 0) { berrno be; clrerror(-1); Mmsg2(errmsg, _("ioctl MTIOCGET error on %s. ERR=%s.\n"), prt_name, be.bstrerror()); Dmsg0(100, errmsg); return false; } Dmsg1(100, "EOD file=%d\n", os_file); set_ateof(); file = os_file; } else { #endif /* * Rewind then use FSF until EOT reached */ if (!rewind(NULL)) { Dmsg0(100, "Rewind error.\n"); return false; } /* * Move file by file to the end of the tape */ int file_num; for (file_num=file; !at_eot(); file_num++) { Dmsg0(200, "eod: doing fsf 1\n"); if (!fsf(1)) { Dmsg0(100, "fsf error.\n"); return false; } /* * Avoid infinite loop by ensuring we advance. */ if (!at_eot() && file_num == (int)file) { Dmsg1(100, "fsf did not advance from file %d\n", file_num); set_ateof(); os_file = get_os_tape_file(); if (os_file >= 0) { Dmsg2(100, "Adjust file from %d to %d\n", file_num, os_file); file = os_file; } break; } } #ifdef MTEOM } #endif /* * Some drivers leave us after second EOF when doing MTEOM, so we must backup * so that appending overwrites the second EOF. */ if (has_cap(CAP_BSFATEOM)) { /* * Backup over EOF */ ok = bsf(1); /* * If BSF worked and fileno is known (not -1), set file */ os_file = get_os_tape_file(); if (os_file >= 0) { Dmsg2(100, "BSFATEOF adjust file from %d to %d\n", file , os_file); file = os_file; } else { file++; /* wing it -- not correct on all OSes */ } } else { update_pos(dcr); /* update position */ } Dmsg1(200, "EOD dev->file=%d\n", file); return ok; }