static void make_confirmation_text (char *ctxt, DATASET *dwinfo, gretlopt *flags) { if (dwinfo->structure == CROSS_SECTION) { sprintf(ctxt, _("%s, observations 1 to %d"), _("Cross-sectional data"), dataset->n); } else if (time_series(dwinfo)) { int lastobs = dwinfo->t1 + dataset->n - 1; char stobs[OBSLEN]; char endobs[OBSLEN]; const char *tslabel; tslabel = _(ts_frequency_string(dwinfo)); if (lastobs > dwinfo->n - 1) { dwinfo->n = lastobs + 1; } ntodate(stobs, dwinfo->t1, dwinfo); ntodate(endobs, lastobs, dwinfo); sprintf(ctxt, _("%s, %s to %s"), tslabel, stobs, endobs); } else if (dwinfo->structure == PANEL_UNKNOWN) { sprintf(ctxt, _("Panel data (%s)\n" "%d cross-sectional units observed over %d periods"), _("stacked time series"), dwinfo->n, dwinfo->pd); } else if (known_panel(dwinfo)) { int nunits = dwinfo->t1; int nperiods = dataset->n / nunits; sprintf(ctxt, _("Panel data (%s)\n" "%d cross-sectional units observed over %d periods"), (dwinfo->structure == STACKED_TIME_SERIES)? _("stacked time series") : _("stacked cross sections"), nunits, nperiods); } if (*flags & DW_DROPMISS) { strcat(ctxt, "\n"); strcat(ctxt, _("(dropping missing observations)")); } }
void radmonanb::Loop( Int_t idfirst, Int_t idlast, TString plotfile ) { // In a ROOT session, you can do: // Root > .L radmonanb.C // Root > radmonanb t // Root > t.GetEntry(12); // Fill t data members with entry number 12 // Root > t.Show(); // Show values of entry 12 // Root > t.Show(16); // Read and show values of entry 16 // Root > t.Loop(); // Loop on all entries // // This is the loop skeleton where: // jentry is the global entry number in the chain // ientry is the entry number in the current Tree // Note that the argument to GetEntry must be: // jentry for TChain::GetEntry // ientry for TTree::GetEntry and TBranch::GetEntry // // To read only selected branches, Insert statements like: // METHOD1: // fChain->SetBranchStatus("*",0); // disable all branches // fChain->SetBranchStatus("branchname",1); // activate branchname // METHOD2: replace line // fChain->GetEntry(jentry); //read all branches //by b_branchname->GetEntry(ientry); //read only this branch if (fChain == 0) return; const Int_t nsensor = 7; // N, K, S, R std::vector<double> V_s[nsensor]; std::vector<double> V_r[nsensor]; std::vector<double> R_n[nsensor]; std::vector<double> T_n[nsensor]; std::vector<double> dV_r[nsensor]; std::vector<double> dR_n[nsensor]; std::vector<double> R_k[nsensor]; std::vector<double> R_r[nsensor]; std::vector<double> time[nsensor]; std::vector<double> record[nsensor]; std::vector<double> V_r_corrected[nsensor]; std::vector<double> V_s_corrected[nsensor]; Long64_t nentries = fChain->GetEntriesFast(); Long64_t nbytes = 0, nb = 0; for (Long64_t jentry=0; jentry<nentries;jentry++) { Long64_t ientry = LoadTree(jentry); if (ientry < 0) break; nb = fChain->GetEntry(jentry); nbytes += nb; if ( id < idfirst || id > idlast ) continue; // cuts to eliminate data pathologies if ( TMath::Abs( (i_r/i_r_set) - 1.0 ) < 0.01 && TMath::Abs( (i_s/i_s_set) - 1.0 ) < 0.01 && TMath::Abs( (i_n/i_n_set) - 1.0 ) < 0.01 && 0.75 < v_n && v_n < 5.0 && v_r < 10.0 && v_s < 10.0 ) { // fill vectors for plotting V_s[channel].push_back(v_s); V_r[channel].push_back(v_r); dV_r[channel].push_back( 0.00005 ); R_n[channel].push_back(v_n/i_n); T_n[channel].push_back( temperature(v_n,i_n) ); dR_n[channel].push_back( 5.0 ); R_k[channel].push_back(v_k/i_k); R_r[channel].push_back(v_r/i_r); time[channel].push_back(t); record[channel].push_back(id); } } gSystem->Setenv("TZ","EDT"); gStyle->SetOptFit(111); // zero point and temperature correction for radfet // Run 14 after 373780 May 28, 2014 Double_t a0[nsensor] = { 3.923, 7.513, 5.395, 6.038, 4.140, 3.306, 3.263 }; Double_t b0[nsensor] = { 0.0 }; Double_t c0[nsensor] = { 0.0 }; // zero point correction for Si detector // Run 14 after 373780 May 28, 2014 Double_t s0[nsensor] = { 4.290, 7.220, 6.250, 2.694, 2.050, 1.054, 1.051 }; TString legend[nsensor] = { "Channel 0: 150", "Channel 1: 151", "Channel 2: 152", "Channel 3: 148", "Channel 4: 149", "Channel 5", "Channel 6" }; TGraphErrors *gr[nsensor]; TGraph *grna[nsensor]; TGraph *gr_vr[nsensor]; TGraph *gr_vrc[nsensor]; TGraph *gr_vs[nsensor]; TGraph *gr_vsc[nsensor]; TGraph *gr_rn[nsensor]; TGraph *gr_tn[nsensor]; TGraph *gr_rk[nsensor]; TGraph *gr_vs_tn[nsensor]; TGraph *gr_vr_tn[nsensor]; TMultiGraph *mg_vs_tn = new TMultiGraph("mg_vs_tn","mg_vs_tn");; TMultiGraph *mg_vr_tn = new TMultiGraph("mg_vr_tn","mg_vr_tn");; Int_t icolor = 1; Double_t corrected; for ( Int_t i = 0; i < nsensor; i++ ) { std::cout << i << ": " << a0[i] << "," << b0[i] << "," << c0[i] << std::endl; for ( Int_t j = 0; j < (int) R_n[i].size(); j++ ) { corrected = V_r[i][j] - ( a0[i] + b0[i]*R_n[i][j] + c0[i]*TMath::Power( R_n[i][j],2.0 ) ); V_r_corrected[i].push_back( corrected ); V_s_corrected[i].push_back( V_s[i][j] - s0[i] ); } gr[i] = new TGraphErrors( R_n[i].size(), &R_n[i][0], &V_r[i][0], &dR_n[i][0], &dV_r[i][0] ); grna[i] = new TGraph( R_n[i].size(), &(record[i][0]), &(R_n[i][0]) ); gr_vs_tn[i] = new TGraph( T_n[i].size(), &(T_n[i][0]), &(V_s[i][0]) ); gr_vs_tn[i]->SetMarkerColor( icolor ); gr_vs_tn[i]->SetLineColor( icolor ); mg_vs_tn->Add( gr_vs_tn[i], "p" ); gr_vr_tn[i] = new TGraph( T_n[i].size(), &(T_n[i][0]), &(V_r[i][0]) ); gr_vr_tn[i]->SetMarkerColor( icolor ); gr_vr_tn[i]->SetLineColor( icolor ); mg_vr_tn->Add( gr_vr_tn[i], "p" ); // time series graphs gr_vr[i] = new TGraph( R_n[i].size(), &(time[i][0]), &(V_r[i][0]) ); gr_vrc[i] = new TGraph( R_n[i].size(), &(time[i][0]), &(V_r_corrected[i][0]) ); gr_vs[i] = new TGraph( V_s[i].size(), &(time[i][0]), &(V_s[i][0]) ); gr_vsc[i] = new TGraph( V_s[i].size(), &(time[i][0]), &(V_s_corrected[i][0]) ); gr_rn[i] = new TGraph( R_n[i].size(), &(time[i][0]), &(R_n[i][0]) ); gr_tn[i] = new TGraph( T_n[i].size(), &(time[i][0]), &(T_n[i][0]) ); gr_rk[i] = new TGraph( R_n[i].size(), &(time[i][0]), &(R_k[i][0]) ); icolor++; } TCanvas *correct = new TCanvas("correct","correct",960,480); correct->Divide(2,1); correct->cd(1); mg_vs_tn->Draw("a"); mg_vs_tn->GetXaxis()->SetTitle("T (#circC)"); mg_vs_tn->GetYaxis()->SetTitle("V (V)"); correct->cd(2); mg_vr_tn->Draw("a"); mg_vr_tn->GetXaxis()->SetTitle("T (#circC)"); mg_vr_tn->GetYaxis()->SetTitle("V (V)"); TCanvas *cradmon = new TCanvas("cradmon","radmon",640,480); cradmon->Divide(2,3); // Draw the time series summary cradmon->cd(1); TMultiGraph *mg_rk; mg_rk = time_series( gr_rk, legend, "PHENIX Dosimeter Resistor", "R ( #Omega )", nsensor ); mg_rk->GetYaxis()->SetRangeUser( 995, 1015.0 ); cradmon->cd(2); TMultiGraph *mg_tn; mg_tn = time_series( gr_tn, legend, "PHENIX Dosimeter Temperature", "T (#circC)", nsensor ); cradmon->cd(3); TMultiGraph *mg_vr; mg_vr = time_series( gr_vr, legend, "PHENIX Dosimeter RadFET", "V@160 #mu A (V)", nsensor ); cradmon->cd(4); TMultiGraph *mg_vs; mg_vs = time_series( gr_vs, legend, "PHENIX Dosimeter p-i-n Diode", "V@25mA (V)", nsensor ); cradmon->cd(5); TMultiGraph *mg_vrc; mg_vrc = time_series( gr_vrc, legend, "PHENIX Corrected RadFET", "#DeltaV (V)", nsensor ); cradmon->cd(6); TMultiGraph *mg_vsc; mg_vsc = time_series( gr_vsc, legend, "PHENIX Corrected p-i-n Diode", "#DeltaV (V)", nsensor ); cradmon->Print(plotfile); // save graphs TFile *rootfile = new TFile( "radmonanb.root", "recreate"); Char_t graphname[20]; for ( Int_t i = 0; i < nsensor; i++ ) { sprintf( graphname, "gr_vr%d", i ); gr_vr[i]->Write( graphname ); sprintf( graphname, "gr_vs%d", i ); gr_vs[i]->Write( graphname ); } rootfile->Close(); }
static int dwiz_make_changes (DATASET *dwinfo, dw_opts *opts, GtkWidget *dlg) { gchar *setobs_cmd = NULL; gretlopt opt = OPT_NONE; int create = (opts->flags & DW_CREATE); int delmiss = (opts->flags & DW_DROPMISS); int delete_markers = 0; int err = 0; #if DWDEBUG fprintf(stderr, "dwiz_make_changes: create = %d\n", create); #endif /* preliminaries */ if (time_series(dwinfo)) { ntodate(dwinfo->stobs, dwinfo->t1, dwinfo); } else if (known_panel(dwinfo)) { if (!dataset_is_panel(dataset)) { /* Turning a subset of a non-panel dataset into a panel: this change will be irreversible */ maybe_unrestrict_dataset(); } } /* special: reorganizing dataset based on panel index vars */ if (dwinfo->structure == PANEL_UNKNOWN) { int uv, tv; err = translate_panel_vars(opts, &uv, &tv); if (!err) { err = set_panel_structure_from_vars(uv, tv, dataset); } if (!err) { setobs_cmd = g_strdup_printf("setobs %s %s --panel-vars", dataset->varname[uv], dataset->varname[tv]); } goto finalize; } /* check for nothing to be done */ if (dwinfo->structure == dataset->structure && dwinfo->pd == dataset->pd && strcmp(dwinfo->stobs, dataset->stobs) == 0) { if (create || delmiss) { /* recording? */ goto finalize; } else { infobox(_("No changes were made")); return 0; } } /* if converting to time series, we probably don't want to retain any original observation-marker strings */ if (dwinfo->structure == TIME_SERIES && dataset->markers && !delmiss) { delete_markers = 1; } /* handle panel structure */ if (known_panel(dwinfo)) { int nunits = dwinfo->t1; int nperiods = dataset->n / nunits; /* we don't offer a choice of "starting obs" */ dwinfo->pd = (dwinfo->structure == STACKED_TIME_SERIES)? nperiods : nunits; strcpy(dwinfo->stobs, "1.1"); } /* handle conversion to cross-section */ if (dwinfo->structure == CROSS_SECTION) { strcpy(dwinfo->stobs, "1"); } if (dwinfo->structure == TIME_SERIES) { opt = OPT_T; } else if (dwinfo->structure == STACKED_TIME_SERIES) { opt = OPT_S; } else if (dwinfo->structure == STACKED_CROSS_SECTION) { opt = OPT_C; } else if (dwinfo->structure == CROSS_SECTION) { opt = OPT_X; } else if (dwinfo->structure == SPECIAL_TIME_SERIES) { opt = OPT_N; } err = simple_set_obs(dataset, dwinfo->pd, dwinfo->stobs, opt); #if DWDEBUG fprintf(stderr, "pd=%d, stobs='%s', opt=%d; set_obs returned %d\n", dwinfo->pd, dwinfo->stobs, opt, err); #endif if (!err && setobs_cmd == NULL) { setobs_cmd = g_strdup_printf("setobs %d %s%s", dwinfo->pd, dwinfo->stobs, print_flags(opt, SETOBS)); } finalize: if (!err && delmiss) { err = dataset_purge_missing_rows(dataset); } if (err) { gui_errmsg(err); } else if (create) { if (opts->flags & DW_SSHEET) { gtk_widget_hide(dlg); maybe_start_editing(); } else { register_data(NULLDATA_STARTED); lib_command_sprintf("nulldata %d", dataset->n); record_command_verbatim(); } } else { if (delete_markers) { dataset_destroy_obs_markers(dataset); } mark_dataset_as_modified(); } if (!err && setobs_cmd != NULL) { lib_command_strcpy(setobs_cmd); record_command_verbatim(); } g_free(setobs_cmd); #if DWDEBUG fprintf(stderr, "dwiz_make_changes: returning %d\n", err); #endif return err; }
static int dwiz_compute_step (int prevstep, int direction, DATASET *dwinfo, dw_opts *opts) { int create = opts->flags & DW_CREATE; int step = 0; #if DWDEBUG fprintf(stderr, "dwiz_compute_step: incoming step = %d\n", prevstep); #endif if (direction == DW_FORWARD) { if (prevstep == DW_SET_TYPE) { if (time_series(dwinfo)) { step = DW_TS_FREQUENCY; } else if (known_panel(dwinfo)) { if (create) { dwinfo->structure = STACKED_TIME_SERIES; step = DW_PANEL_SIZE; } else { step = DW_PANEL_MODE; } } else if (dwinfo->structure == PANEL_UNKNOWN) { step = DW_PANEL_MODE; } else { /* cross section */ dwinfo->pd = 1; step = DW_CONFIRM; } } else if (prevstep == DW_TS_FREQUENCY) { if (dwinfo->structure != SPECIAL_TIME_SERIES) { if (dwinfo->pd == 52) { step = DW_WEEKLY_SELECT; } else { step = DW_STARTING_OBS; } } else { step = DW_STARTING_OBS; } } else if (prevstep == DW_WEEKLY_SELECT) { step = DW_STARTING_OBS; } else if (prevstep == DW_PANEL_MODE) { if (dwinfo->structure == PANEL_UNKNOWN) { step = DW_PANEL_VARS; } else { step = DW_PANEL_SIZE; } } else if (prevstep == DW_PANEL_VARS) { if (process_panel_vars(dwinfo, opts)) { /* error: don't proceed */ step = DW_PANEL_VARS; } else { step = DW_CONFIRM; } } else if (prevstep == DW_STARTING_OBS || prevstep == DW_PANEL_SIZE) { if (prevstep == DW_PANEL_SIZE && dwinfo->structure == STACKED_TIME_SERIES) { dwinfo->pd = dwinfo->t2; } step = DW_CONFIRM; } } else if (direction == DW_BACK) { if (prevstep == DW_TS_FREQUENCY || prevstep == DW_PANEL_MODE) { step = DW_SET_TYPE; } else if (prevstep == DW_STARTING_OBS) { if (dwinfo->pd == 52) { step = DW_WEEKLY_SELECT; } else { step = DW_TS_FREQUENCY; } } else if (prevstep == DW_WEEKLY_SELECT) { step = DW_TS_FREQUENCY; } else if (prevstep == DW_PANEL_SIZE) { step = (create)? DW_SET_TYPE : DW_PANEL_MODE; } else if (prevstep == DW_PANEL_VARS) { step = DW_PANEL_MODE; } else if (prevstep == DW_CONFIRM) { if (dwinfo->structure == TIME_SERIES || dwinfo->structure == SPECIAL_TIME_SERIES) { step = DW_STARTING_OBS; } else if (dwinfo->structure == STACKED_TIME_SERIES || dwinfo->structure == STACKED_CROSS_SECTION) { step = DW_PANEL_SIZE; } else { step = DW_SET_TYPE; } } } #if DWDEBUG fprintf(stderr, "dwiz_compute_step: returning step = %d\n", step); #endif return step; }