std::vector<double> DataCard::get_bg_errors(DataChain* data, std::vector<DataChain*> bg_chains, DataChain* signal_chain, Variable* var, bool with_cut, std::vector<Variable*>* variables, std::vector<double> bg_mc_weights, std::string mva_cut_str) { double bg_errors_parsed[bg_chains.size()]; if (var->name_styled = "MVA Output"){std::cout<<"gto gbg errors parsed\n";} std::vector<double> bg_errors = HistoPlot::get_mc_weight_errors(data, bg_chains, var, with_cut, variables, bg_mc_weights, mva_cut_str); if (var->name_styled = "MVA Output"){std::cout<<"got mc weight errors parsed: \n";} std::vector<double> rates = get_rates(data, bg_chains, signal_chain, var,with_cut, variables, bg_mc_weights, mva_cut_str); if (var->name_styled = "MVA Output"){std::cout<<"got rates\n";} for(int i = 0; i < bg_chains.size(); i++) { if (rates[i+1] != 0){ bg_errors_parsed[i] = 1 + (bg_errors[i] / rates[i+1]);} else{bg_errors_parsed[i] = 2;} } if (var->name_styled = "MVA Output"){std::cout<<"got bg errors parsed\n";} std::vector<double> bg_error_vector (bg_errors_parsed, bg_errors_parsed + sizeof(bg_errors_parsed) / sizeof(bg_errors_parsed[0])); if (var->name_styled = "MVA Output"){std::cout<<"got gbg errors vector\n";} return bg_error_vector; }
void DataCard::create_datacard(std::vector<double> mc_weights, DataChain* data_chain, DataChain* signal_chain, std::vector<DataChain*> bg_chains, Variable* var, bool with_cut, std::vector<Variable*>* variables, std::string mva_cut_str, std::string training_output_name) { std::cout<<"started create datacard"; //std::vector<double> mc_weights = HistoPlot::mc_weights(data_chain, bg_chains, var, with_cut, variables,mva_cut_str); std::fstream fs; const char* data_card_name = get_data_card_name(training_output_name); fs.open (data_card_name, std::fstream::in | std::fstream::out | std::fstream::app); int size = 1 + bg_chains.size(); fs << imax_string(); fs << jmax_string(size - 1); fs << kmax_string(size); fs << no_shape_line(); fs << dashed_line(); fs << bin_header_string(); fs << bin_observation_string(get_total_nevents(bg_chains, var, with_cut, variables, mc_weights,mva_cut_str)); std::cout<<"made observation string: "<<bin_observation_string(get_total_nevents(bg_chains, var, with_cut, variables, mc_weights,mva_cut_str)); fs << dashed_line(); fs << bin_grid_line(size); std::cout<<"made grid line"; fs << process_labels(bg_chains, signal_chain); std::cout<<"made process_labels"; fs << process_2_string(process_line_2(size)); std::cout<<"made process_2_string "; fs << rate_string(get_rates(data_chain, bg_chains, signal_chain, var, with_cut, variables, mc_weights,mva_cut_str)); std::cout<<"made rate_string: "<<rate_string(get_rates(data_chain, bg_chains, signal_chain, var, with_cut, variables, mc_weights,mva_cut_str))<<"\n"; fs << dashed_line(); fs << get_systematic_string(data_chain, bg_chains, signal_chain, var, with_cut, variables, mc_weights,mva_cut_str); std::cout<<"made syst_string "; fs.close(); std::cout<<"data card created with name: "<<data_card_name<<"\n"; for (int i=0; i< 10;i++){ } }
/** * snd_ac97_pcm_assign - assign AC97 slots to given PCM streams * @bus: the ac97 bus instance * @pcms_count: count of PCMs to be assigned * @pcms: PCMs to be assigned * * It assigns available AC97 slots for given PCMs. If none or only * some slots are available, pcm->xxx.slots and pcm->xxx.rslots[] members * are reduced and might be zero. * * Return: Zero if successful, or a negative error code on failure. */ int snd_ac97_pcm_assign(struct snd_ac97_bus *bus, unsigned short pcms_count, const struct ac97_pcm *pcms) { int i, j, k; const struct ac97_pcm *pcm; struct ac97_pcm *rpcms, *rpcm; unsigned short avail_slots[2][4]; unsigned char rate_table[2][4]; unsigned short tmp, slots; unsigned short spdif_slots[4]; unsigned int rates; struct snd_ac97 *codec; rpcms = kcalloc(pcms_count, sizeof(struct ac97_pcm), GFP_KERNEL); if (rpcms == NULL) return -ENOMEM; memset(avail_slots, 0, sizeof(avail_slots)); memset(rate_table, 0, sizeof(rate_table)); memset(spdif_slots, 0, sizeof(spdif_slots)); for (i = 0; i < 4; i++) { codec = bus->codec[i]; if (!codec) continue; avail_slots[0][i] = get_pslots(codec, &rate_table[0][i], &spdif_slots[i]); avail_slots[1][i] = get_cslots(codec); if (!(codec->scaps & AC97_SCAP_INDEP_SDIN)) { for (j = 0; j < i; j++) { if (bus->codec[j]) avail_slots[1][i] &= ~avail_slots[1][j]; } } } /* first step - exclusive devices */ for (i = 0; i < pcms_count; i++) { pcm = &pcms[i]; rpcm = &rpcms[i]; /* low-level driver thinks that it's more clever */ if (pcm->copy_flag) { *rpcm = *pcm; continue; } rpcm->stream = pcm->stream; rpcm->exclusive = pcm->exclusive; rpcm->spdif = pcm->spdif; rpcm->private_value = pcm->private_value; rpcm->bus = bus; rpcm->rates = ~0; slots = pcm->r[0].slots; for (j = 0; j < 4 && slots; j++) { if (!bus->codec[j]) continue; rates = ~0; if (pcm->spdif && pcm->stream == 0) tmp = spdif_slots[j]; else tmp = avail_slots[pcm->stream][j]; if (pcm->exclusive) { /* exclusive access */ tmp &= slots; for (k = 0; k < i; k++) { if (rpcm->stream == rpcms[k].stream) tmp &= ~rpcms[k].r[0].rslots[j]; } } else { /* non-exclusive access */ tmp &= pcm->r[0].slots; } if (tmp) { rpcm->r[0].rslots[j] = tmp; rpcm->r[0].codec[j] = bus->codec[j]; rpcm->r[0].rate_table[j] = rate_table[pcm->stream][j]; if (bus->no_vra) rates = SNDRV_PCM_RATE_48000; else rates = get_rates(rpcm, j, tmp, 0); if (pcm->exclusive) avail_slots[pcm->stream][j] &= ~tmp; } slots &= ~tmp; rpcm->r[0].slots |= tmp; rpcm->rates &= rates; } /* for double rate, we check the first codec only */ if (pcm->stream == SNDRV_PCM_STREAM_PLAYBACK && bus->codec[0] && (bus->codec[0]->flags & AC97_DOUBLE_RATE) && rate_table[pcm->stream][0] == 0) { tmp = (1<<AC97_SLOT_PCM_LEFT) | (1<<AC97_SLOT_PCM_RIGHT) | (1<<AC97_SLOT_PCM_LEFT_0) | (1<<AC97_SLOT_PCM_RIGHT_0); if ((tmp & pcm->r[1].slots) == tmp) { rpcm->r[1].slots = tmp; rpcm->r[1].rslots[0] = tmp; rpcm->r[1].rate_table[0] = 0; rpcm->r[1].codec[0] = bus->codec[0]; if (pcm->exclusive) avail_slots[pcm->stream][0] &= ~tmp; if (bus->no_vra) rates = SNDRV_PCM_RATE_96000; else rates = get_rates(rpcm, 0, tmp, 1); rpcm->rates |= rates; } } if (rpcm->rates == ~0) rpcm->rates = 0; /* not used */ } bus->pcms_count = pcms_count; bus->pcms = rpcms; return 0; }